<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>GitHub Go Monthly Trending</title>
    <description>Monthly Trending of Go in GitHub</description>
    <pubDate>Mon, 18 May 2026 01:58:00 GMT</pubDate>
    <link>http://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>QuantumNous/new-api</title>
      <link>https://github.com/QuantumNous/new-api</link>
      <description>&lt;p&gt;A unified AI model hub for aggregation &amp; distribution. It supports cross-converting various LLMs into OpenAI-compatible, Claude-compatible, or Gemini-compatible formats. A centralized gateway for personal and enterprise model management. 🍥&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/web/default/public/logo.png&quot; alt=&quot;new-api&quot; /&gt;&lt;/p&gt; 
 &lt;h1&gt;New API&lt;/h1&gt; 
 &lt;p&gt;🍥 &lt;strong&gt;Next-Generation LLM Gateway and AI Asset Management System&lt;/strong&gt;&lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/README.zh_CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/README.zh_TW.md&quot;&gt;繁體中文&lt;/a&gt; | &lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/README.fr.md&quot;&gt;Français&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/README.ja.md&quot;&gt;日本語&lt;/a&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Calcium-Ion/new-api/main/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/Calcium-Ion/new-api?color=brightgreen&quot; alt=&quot;license&quot; /&gt; &lt;/a&gt;
  &lt;!--
  --&gt;&lt;a href=&quot;https://github.com/Calcium-Ion/new-api/releases/latest&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/Calcium-Ion/new-api?color=brightgreen&amp;amp;include_prereleases&quot; alt=&quot;release&quot; /&gt; &lt;/a&gt;
  &lt;!--
  --&gt;&lt;a href=&quot;https://hub.docker.com/r/CalciumIon/new-api&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/docker-dockerHub-blue&quot; alt=&quot;docker&quot; /&gt; &lt;/a&gt;
  &lt;!--
  --&gt;&lt;a href=&quot;https://goreportcard.com/report/github.com/Calcium-Ion/new-api&quot;&gt; &lt;img src=&quot;https://goreportcard.com/badge/github.com/Calcium-Ion/new-api&quot; alt=&quot;GoReportCard&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/20180&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/20180&quot; alt=&quot;QuantumNous%2Fnew-api | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt; &lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://hellogithub.com/repository/QuantumNous/new-api&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://api.hellogithub.com/v1/widgets/recommend.svg?rid=539ac4217e69431684ad4a0bab768811&amp;amp;claim_uid=tbFPfKIDHpc4TzR&quot; alt=&quot;Featured｜HelloGitHub&quot; style=&quot;width: 250px; height: 54px;&quot; width=&quot;250&quot; height=&quot;54&quot; /&gt; &lt;/a&gt;
  &lt;!--
  --&gt;&lt;a href=&quot;https://www.producthunt.com/products/new-api/launches/new-api?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_campaign=badge-new-api&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img src=&quot;https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1047693&amp;amp;theme=light&amp;amp;t=1769577875005&quot; alt=&quot;New API - All-in-one AI asset management gateway. | Product Hunt&quot; style=&quot;width: 250px; height: 54px;&quot; width=&quot;250&quot; height=&quot;54&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/#-quick-start&quot;&gt;Quick Start&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/#-key-features&quot;&gt;Key Features&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/#-deployment&quot;&gt;Deployment&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/#-documentation&quot;&gt;Documentation&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/#-help-support&quot;&gt;Help&lt;/a&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;📝 Project Description&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report 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 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;This project is intended solely for lawful and authorized AI API gateway, organization-level authentication, multi-model management, usage analytics, cost accounting, and private deployment scenarios.&lt;/li&gt; 
  &lt;li&gt;Users must lawfully obtain upstream API keys, accounts, model services, and interface permissions, and must comply with upstream terms of service and applicable laws and regulations.&lt;/li&gt; 
  &lt;li&gt;Users should ensure their use complies with upstream terms of service and applicable laws and regulations.&lt;/li&gt; 
  &lt;li&gt;When providing generative AI services to the public, users should comply with applicable regulatory requirements and fulfill all filing, licensing, content safety, real-name verification, log retention, tax, and upstream authorization obligations required by their jurisdiction.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤝 Trusted Partners&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;em&gt;No particular order&lt;/em&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.cherry-ai.com/&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/images/cherry-studio.png&quot; alt=&quot;Cherry Studio&quot; height=&quot;80&quot; /&gt; &lt;/a&gt;
 &lt;!--
  --&gt;&lt;a href=&quot;https://github.com/iOfficeAI/AionUi/&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/images/aionui.png&quot; alt=&quot;Aion UI&quot; height=&quot;80&quot; /&gt; &lt;/a&gt;
 &lt;!--
  --&gt;&lt;a href=&quot;https://bda.pku.edu.cn/&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/images/pku.png&quot; alt=&quot;Peking University&quot; height=&quot;80&quot; /&gt; &lt;/a&gt;
 &lt;!--
  --&gt;&lt;a href=&quot;https://www.compshare.cn/?ytag=GPU_yy_gh_newapi&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/images/ucloud.png&quot; alt=&quot;UCloud&quot; height=&quot;80&quot; /&gt; &lt;/a&gt;
 &lt;!--
  --&gt;&lt;a href=&quot;https://www.aliyun.com/&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/images/aliyun.png&quot; alt=&quot;Alibaba Cloud&quot; height=&quot;80&quot; /&gt; &lt;/a&gt;
 &lt;!--
  --&gt;&lt;a href=&quot;https://io.net/&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/images/io-net.png&quot; alt=&quot;IO.NET&quot; height=&quot;80&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🙏 Special Thanks&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.jetbrains.com/?from=new-api&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png&quot; alt=&quot;JetBrains Logo&quot; width=&quot;120&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;Thanks to &lt;a href=&quot;https://www.jetbrains.com/?from=new-api&quot;&gt;JetBrains&lt;/a&gt; for providing free open-source development license for this project&lt;/strong&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Quick Start&lt;/h2&gt; 
&lt;h3&gt;Using Docker Compose (Recommended)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Clone the project
git clone https://github.com/QuantumNous/new-api.git
cd new-api

# Edit docker-compose.yml configuration
nano docker-compose.yml

# Start the service
docker-compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Using Docker Commands&lt;/strong&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Pull the latest image
docker pull calciumion/new-api:latest

# Using SQLite (default)
docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest

# Using MySQL
docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e SQL_DSN=&quot;root:123456@tcp(localhost:3306)/oneapi&quot; \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; &lt;code&gt;-v ./data:/data&lt;/code&gt; will save data in the &lt;code&gt;data&lt;/code&gt; folder of the current directory, you can also change it to an absolute path like &lt;code&gt;-v /your/custom/path:/data&lt;/code&gt;&lt;/p&gt; 
 &lt;/blockquote&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;p&gt;🎉 After deployment is complete, visit &lt;code&gt;http://localhost:3000&lt;/code&gt; to start using!&lt;/p&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;When operating this project as a public generative AI service or API resale service, users should first complete all required filing, licensing, content safety, real-name verification, log retention, tax, payment, and upstream authorization obligations.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;📖 For more deployment methods, please refer to &lt;a href=&quot;https://docs.newapi.pro/en/docs/installation&quot;&gt;Deployment Guide&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📚 Documentation&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;📖 &lt;a href=&quot;https://docs.newapi.pro/en/docs&quot;&gt;Official Documentation&lt;/a&gt; | &lt;a href=&quot;https://deepwiki.com/QuantumNous/new-api&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;strong&gt;Quick Navigation:&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Category&lt;/th&gt; 
   &lt;th&gt;Link&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🚀 Deployment Guide&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/installation&quot;&gt;Installation Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;⚙️ Environment Configuration&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/installation/config-maintenance/environment-variables&quot;&gt;Environment Variables&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📡 API Documentation&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api&quot;&gt;API Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;❓ FAQ&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/support/faq&quot;&gt;FAQ&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;💬 Community Interaction&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/support/community-interaction&quot;&gt;Communication Channels&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ Key Features&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;For detailed features, please refer to &lt;a href=&quot;https://docs.newapi.pro/en/docs/guide/wiki/basic-concepts/features-introduction&quot;&gt;Features Introduction&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;🎨 Core Functions&lt;/h3&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;🎨 New UI&lt;/td&gt; 
   &lt;td&gt;Modern user interface design&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🌍 Multi-language&lt;/td&gt; 
   &lt;td&gt;Supports Simplified Chinese, Traditional Chinese, English, French, Japanese&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔄 Data Compatibility&lt;/td&gt; 
   &lt;td&gt;Fully compatible with the original One API database&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📈 Data Dashboard&lt;/td&gt; 
   &lt;td&gt;Visual console and statistical analysis&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔒 Permission Management&lt;/td&gt; 
   &lt;td&gt;Token grouping, model restrictions, user management&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;💰 Authorized Usage Accounting and Billing&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;✅ Internal top-up and quota allocation for lawful authorized scenarios (EPay, Stripe)&lt;/li&gt; 
 &lt;li&gt;✅ Organization-level per-request, usage-based, and cache-hit cost accounting&lt;/li&gt; 
 &lt;li&gt;✅ Cache billing statistics for OpenAI, Azure, DeepSeek, Claude, Qwen, and supported models&lt;/li&gt; 
 &lt;li&gt;✅ Flexible billing policies for internal management or authorized enterprise customers&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🔐 Authorization and Security&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;😈 Discord authorization login&lt;/li&gt; 
 &lt;li&gt;🤖 LinuxDO authorization login&lt;/li&gt; 
 &lt;li&gt;📱 Telegram authorization login&lt;/li&gt; 
 &lt;li&gt;🔑 OIDC unified authentication&lt;/li&gt; 
 &lt;li&gt;🔍 Key quota query usage (with &lt;a href=&quot;https://github.com/Calcium-Ion/new-api-key-tool&quot;&gt;new-api-key-tool&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🚀 Advanced Features&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;API Format Support:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;⚡ &lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/create-response&quot;&gt;OpenAI Responses&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;⚡ &lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/realtime/create-realtime-session&quot;&gt;OpenAI Realtime API&lt;/a&gt; (including Azure)&lt;/li&gt; 
 &lt;li&gt;⚡ &lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/create-message&quot;&gt;Claude Messages&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;⚡ &lt;a href=&quot;https://doc.newapi.pro/en/api/google-gemini-chat&quot;&gt;Google Gemini&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;🔄 &lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/rerank/create-rerank&quot;&gt;Rerank Models&lt;/a&gt; (Cohere, Jina)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Intelligent Routing:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;⚖️ Channel weighted random&lt;/li&gt; 
 &lt;li&gt;🔄 Automatic retry on failure&lt;/li&gt; 
 &lt;li&gt;🚦 User-level model rate limiting&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Format Conversion:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🔄 &lt;strong&gt;OpenAI Compatible ⇄ Claude Messages&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;🔄 &lt;strong&gt;OpenAI Compatible → Google Gemini&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;🔄 &lt;strong&gt;Google Gemini → OpenAI Compatible&lt;/strong&gt; - Text only, function calling not supported yet&lt;/li&gt; 
 &lt;li&gt;🚧 &lt;strong&gt;OpenAI Compatible ⇄ OpenAI Responses&lt;/strong&gt; - In development&lt;/li&gt; 
 &lt;li&gt;🔄 &lt;strong&gt;Thinking-to-content functionality&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Reasoning Effort Support:&lt;/strong&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;View detailed configuration&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;OpenAI series models:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;code&gt;o3-mini-high&lt;/code&gt; - High reasoning effort&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;o3-mini-medium&lt;/code&gt; - Medium reasoning effort&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;o3-mini-low&lt;/code&gt; - Low reasoning effort&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;gpt-5-high&lt;/code&gt; - High reasoning effort&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;gpt-5-medium&lt;/code&gt; - Medium reasoning effort&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;gpt-5-low&lt;/code&gt; - Low reasoning effort&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;Claude thinking models:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;code&gt;claude-3-7-sonnet-20250219-thinking&lt;/code&gt; - Enable thinking mode&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;Google Gemini series models:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;code&gt;gemini-2.5-flash-thinking&lt;/code&gt; - Enable thinking mode&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;gemini-2.5-flash-nothinking&lt;/code&gt; - Disable thinking mode&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;gemini-2.5-pro-thinking&lt;/code&gt; - Enable thinking mode&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;gemini-2.5-pro-thinking-128&lt;/code&gt; - Enable thinking mode with thinking budget of 128 tokens&lt;/li&gt; 
  &lt;li&gt;You can also append &lt;code&gt;-low&lt;/code&gt;, &lt;code&gt;-medium&lt;/code&gt;, or &lt;code&gt;-high&lt;/code&gt; to any Gemini model name to request the corresponding reasoning effort (no extra thinking-budget suffix needed).&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤖 Model Support&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;For details, please refer to &lt;a href=&quot;https://docs.newapi.pro/en/docs/api&quot;&gt;API Documentation - Gateway Interface&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Model Type&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Documentation&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🤖 OpenAI-Compatible&lt;/td&gt; 
   &lt;td&gt;OpenAI compatible models&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createchatcompletion&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🤖 OpenAI Responses&lt;/td&gt; 
   &lt;td&gt;OpenAI Responses format&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createresponse&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🎨 Midjourney-Proxy&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/novicezk/midjourney-proxy&quot;&gt;Midjourney-Proxy(Plus)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://doc.newapi.pro/api/midjourney-proxy-image&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🎵 Suno-API&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Suno-API/Suno-API&quot;&gt;Suno API&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://doc.newapi.pro/api/suno-music&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔄 Rerank&lt;/td&gt; 
   &lt;td&gt;Cohere, Jina&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/rerank/creatererank&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;💬 Claude&lt;/td&gt; 
   &lt;td&gt;Messages format&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/createmessage&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🌐 Gemini&lt;/td&gt; 
   &lt;td&gt;Google Gemini format&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/gemini/geminirelayv1beta&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔧 Dify&lt;/td&gt; 
   &lt;td&gt;ChatFlow mode&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🎯 Custom upstream&lt;/td&gt; 
   &lt;td&gt;Supports configuring legally authorized upstream endpoints&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;📡 Supported Interfaces&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;View complete interface list&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createchatcompletion&quot;&gt;Chat Interface (Chat Completions)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createresponse&quot;&gt;Response Interface (Responses)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/images/openai/post-v1-images-generations&quot;&gt;Image Interface (Image)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/audio/openai/create-transcription&quot;&gt;Audio Interface (Audio)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/audio/openai/createspeech&quot;&gt;Video Interface (Video)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/embeddings/createembedding&quot;&gt;Embedding Interface (Embeddings)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/rerank/creatererank&quot;&gt;Rerank Interface (Rerank)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/realtime/createrealtimesession&quot;&gt;Realtime Conversation (Realtime)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/createmessage&quot;&gt;Claude Chat&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/api/ai-model/chat/gemini/geminirelayv1beta&quot;&gt;Google Gemini Chat&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚢 Deployment&lt;/h2&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;&lt;strong&gt;Latest Docker image:&lt;/strong&gt; &lt;code&gt;calciumion/new-api:latest&lt;/code&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;📋 Deployment Requirements&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Component&lt;/th&gt; 
   &lt;th&gt;Requirement&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Local database&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;SQLite (Docker must mount &lt;code&gt;/data&lt;/code&gt; directory)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Remote database&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;MySQL ≥ 5.7.8 or PostgreSQL ≥ 9.6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Container engine&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Docker / Docker Compose&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;⚙️ Environment Variable Configuration&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;Common environment variable configuration&lt;/summary&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Variable Name&lt;/th&gt; 
    &lt;th&gt;Description&lt;/th&gt; 
    &lt;th&gt;Default Value&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;SESSION_SECRET&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Session secret (required for multi-machine deployment)&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;CRYPTO_SECRET&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Encryption secret (required for Redis)&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;SQL_DSN&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Database connection string&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;REDIS_CONN_STRING&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Redis connection string&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;STREAMING_TIMEOUT&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Streaming timeout (seconds)&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;300&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;STREAM_SCANNER_MAX_BUFFER_MB&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Max per-line buffer (MB) for the stream scanner; increase when upstream sends huge image/base64 payloads&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;64&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;MAX_REQUEST_BODY_MB&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Max request body size (MB, counted &lt;strong&gt;after decompression&lt;/strong&gt;; prevents huge requests/zip bombs from exhausting memory). Exceeding it returns &lt;code&gt;413&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;32&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;AZURE_DEFAULT_API_VERSION&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Azure API version&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;2025-04-01-preview&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;ERROR_LOG_ENABLED&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Error log switch&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;PYROSCOPE_URL&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Pyroscope server address&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;PYROSCOPE_APP_NAME&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Pyroscope application name&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;new-api&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;PYROSCOPE_BASIC_AUTH_USER&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Pyroscope basic auth user&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;PYROSCOPE_BASIC_AUTH_PASSWORD&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Pyroscope basic auth password&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;PYROSCOPE_MUTEX_RATE&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Pyroscope mutex sampling rate&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;PYROSCOPE_BLOCK_RATE&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Pyroscope block sampling rate&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;HOSTNAME&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Hostname tag for Pyroscope&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;new-api&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;📖 &lt;strong&gt;Complete configuration:&lt;/strong&gt; &lt;a href=&quot;https://docs.newapi.pro/en/docs/installation/config-maintenance/environment-variables&quot;&gt;Environment Variables Documentation&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;h3&gt;🔧 Deployment Methods&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Method 1: Docker Compose (Recommended)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Clone the project
git clone https://github.com/QuantumNous/new-api.git
cd new-api

# Edit configuration
nano docker-compose.yml

# Start service
docker-compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Method 2: Docker Commands&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;Using SQLite:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Using MySQL:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e SQL_DSN=&quot;root:123456@tcp(localhost:3306)/oneapi&quot; \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;&lt;strong&gt;💡 Path explanation:&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;./data:/data&lt;/code&gt; - Relative path, data saved in the data folder of the current directory&lt;/li&gt; 
   &lt;li&gt;You can also use absolute path, e.g.: &lt;code&gt;/your/custom/path:/data&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/blockquote&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Method 3: BaoTa Panel&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Install BaoTa Panel (≥ 9.2.0 version)&lt;/li&gt; 
  &lt;li&gt;Search for &lt;strong&gt;New-API&lt;/strong&gt; in the application store&lt;/li&gt; 
  &lt;li&gt;One-click installation&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;p&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/docs/BT.md&quot;&gt;Tutorial with images&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;h3&gt;⚠️ Multi-machine Deployment Considerations&lt;/h3&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;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Must set&lt;/strong&gt; &lt;code&gt;SESSION_SECRET&lt;/code&gt; - Otherwise login status inconsistent&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Shared Redis must set&lt;/strong&gt; &lt;code&gt;CRYPTO_SECRET&lt;/code&gt; - Otherwise data cannot be decrypted&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/div&gt; 
&lt;h3&gt;🔄 Channel Retry and Cache&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Retry configuration:&lt;/strong&gt; &lt;code&gt;Settings → Operation Settings → General Settings → Failure Retry Count&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Cache configuration:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;REDIS_CONN_STRING&lt;/code&gt;: Redis cache (recommended)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;MEMORY_CACHE_ENABLED&lt;/code&gt;: Memory cache&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🔗 Related Projects&lt;/h2&gt; 
&lt;h3&gt;Upstream Projects&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Project&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;a href=&quot;https://github.com/songquanpeng/one-api&quot;&gt;One API&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Original project base&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/novicezk/midjourney-proxy&quot;&gt;Midjourney-Proxy&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Midjourney interface support&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Supporting Tools&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Project&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;a href=&quot;https://github.com/Calcium-Ion/new-api-key-tool&quot;&gt;new-api-key-tool&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Key quota query tool&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Calcium-Ion/new-api-horizon&quot;&gt;new-api-horizon&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;New API high-performance optimized version&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;💬 Help Support&lt;/h2&gt; 
&lt;h3&gt;📖 Documentation Resources&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Resource&lt;/th&gt; 
   &lt;th&gt;Link&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📘 FAQ&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/support/faq&quot;&gt;FAQ&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;💬 Community Interaction&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/support/community-interaction&quot;&gt;Communication Channels&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🐛 Issue Feedback&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs/support/feedback-issues&quot;&gt;Issue Feedback&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📚 Complete Documentation&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs&quot;&gt;Official Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;🤝 Contribution Guide&lt;/h3&gt; 
&lt;p&gt;Welcome all forms of contribution!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🐛 Report Bugs&lt;/li&gt; 
 &lt;li&gt;💡 Propose New Features&lt;/li&gt; 
 &lt;li&gt;📝 Improve Documentation&lt;/li&gt; 
 &lt;li&gt;🔧 Submit Code&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📜 License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the &lt;a href=&quot;https://raw.githubusercontent.com/QuantumNous/new-api/main/LICENSE&quot;&gt;GNU Affero General Public License v3.0 (AGPLv3)&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Additional terms under AGPLv3 Section 7 apply. Modified versions must preserve the author attribution notice &lt;code&gt;Frontend design and development by New API contributors.&lt;/code&gt; in the appropriate legal notices and in any prominent about, legal, footer, or attribution location presented by the user interface.&lt;/p&gt; 
&lt;p&gt;Modified versions that present a user interface must also preserve a visible link to the original project: &lt;a href=&quot;https://github.com/QuantumNous/new-api&quot;&gt;https://github.com/QuantumNous/new-api&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;This is an open-source project developed based on &lt;a href=&quot;https://github.com/songquanpeng/one-api&quot;&gt;One API&lt;/a&gt; (MIT License).&lt;/p&gt; 
&lt;p&gt;If your organization&#39;s policies do not permit the use of AGPLv3-licensed software, or if you wish to avoid the open-source obligations of AGPLv3, please contact us at: &lt;a href=&quot;mailto:support@quantumnous.com&quot;&gt;support@quantumnous.com&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌟 Star History&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://star-history.com/#Calcium-Ion/new-api&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=Calcium-Ion/new-api&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;💖 Thank you for using New API&lt;/h3&gt; 
 &lt;p&gt;If this project is helpful to you, welcome to give us a ⭐️ Star！&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.newapi.pro/en/docs&quot;&gt;Official Documentation&lt;/a&gt;&lt;/strong&gt; • &lt;strong&gt;&lt;a href=&quot;https://github.com/Calcium-Ion/new-api/issues&quot;&gt;Issue Feedback&lt;/a&gt;&lt;/strong&gt; • &lt;strong&gt;&lt;a href=&quot;https://github.com/Calcium-Ion/new-api/releases&quot;&gt;Latest Release&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;sub&gt;Built with ❤️ by QuantumNous&lt;/sub&gt;&lt;/p&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/0d8446a8412535560507d7649f1174ebfb0fc962e2e5666ea560e1c3a206eb8e/QuantumNous/new-api" medium="image" />
      
    </item>
    
    <item>
      <title>google/osv-scanner</title>
      <link>https://github.com/google/osv-scanner</link>
      <description>&lt;p&gt;Vulnerability scanner written in Go which uses the data provided by https://osv.dev&lt;/p&gt;&lt;hr&gt;&lt;picture&gt; 
 &lt;source srcset=&quot;/docs/images/osv-scanner-full-logo-darkmode.svg&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
 &lt;!-- markdown-link-check-disable-next-line --&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/google/osv-scanner/main/docs/images/osv-scanner-full-logo-lightmode.svg?sanitize=true&quot; /&gt; 
&lt;/picture&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/google/osv-scanner&quot;&gt;&lt;img src=&quot;https://api.securityscorecards.dev/projects/github.com/google/osv-scanner/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/google/osv-scanner&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/google/osv-scanner&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/google/osv-scanner&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/google/osv-scanner/graph/badge.svg?token=C8IDVX9LP5&quot; alt=&quot;codecov&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://slsa.dev&quot;&gt;&lt;img src=&quot;https://slsa.dev/images/gh-badge-level3.svg?sanitize=true&quot; alt=&quot;SLSA 3&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/google/osv-scanner/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/google/osv-scanner&quot; alt=&quot;GitHub Release&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Use OSV-Scanner to find existing vulnerabilities affecting your project&#39;s dependencies. OSV-Scanner provides an officially supported frontend to the &lt;a href=&quot;https://osv.dev/&quot;&gt;OSV database&lt;/a&gt; and CLI interface to &lt;a href=&quot;https://github.com/google/osv-scalibr&quot;&gt;OSV-Scalibr&lt;/a&gt; that connects a project’s list of dependencies with the vulnerabilities that affect them.&lt;/p&gt; 
&lt;p&gt;OSV-Scanner supports a wide range of project types, package managers and features, including but not limited to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Languages:&lt;/strong&gt; C/C++, Dart, Elixir, Go, Java, Javascript, PHP, Python, R, Ruby, Rust.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Package Managers:&lt;/strong&gt; npm, pip, yarn, maven, go modules, cargo, gem, composer, nuget and others.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Operating Systems:&lt;/strong&gt; Detects vulnerabilities in OS packages on Linux systems.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Containers:&lt;/strong&gt; Scans container images for vulnerabilities in their base images and included packages.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Guided Remediation:&lt;/strong&gt; Provides recommendations for package version upgrades based on criteria such as dependency depth, minimum severity, fix strategy, and return on investment.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;OSV-Scanner uses the extensible &lt;a href=&quot;https://github.com/google/osv-scalibr&quot;&gt;OSV-Scalibr&lt;/a&gt; library under the hood to provide this functionality. If a language or package manager is not supported currently, please file a &lt;a href=&quot;https://github.com/google/osv-scanner/issues&quot;&gt;feature request.&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;Underlying database&lt;/h4&gt; 
&lt;p&gt;The underlying database, &lt;a href=&quot;https://osv.dev/&quot;&gt;OSV.dev&lt;/a&gt; has several benefits in comparison with closed source advisory databases and scanners:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Covering most open source language and OS ecosystems (including &lt;a href=&quot;https://osv.dev/list?q=&amp;amp;ecosystem=GIT&quot;&gt;Git&lt;/a&gt;), it’s comprehensive.&lt;/li&gt; 
 &lt;li&gt;Each advisory comes from an open and authoritative source (e.g. &lt;a href=&quot;https://github.com/github/advisory-database&quot;&gt;GitHub Security Advisories&lt;/a&gt;, &lt;a href=&quot;https://github.com/rustsec/advisory-db&quot;&gt;RustSec Advisory Database&lt;/a&gt;, &lt;a href=&quot;https://github.com/canonical/ubuntu-security-notices/tree/main/osv&quot;&gt;Ubuntu security notices&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Anyone can suggest improvements to advisories, resulting in a very high quality database.&lt;/li&gt; 
 &lt;li&gt;The OSV format unambiguously stores information about affected versions in a machine-readable format that precisely maps onto a developer’s list of packages&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The above all results in accurate and actionable vulnerability notifications, which reduces the time needed to resolve them. Check out &lt;a href=&quot;https://osv.dev/&quot;&gt;OSV.dev&lt;/a&gt; for more details!&lt;/p&gt; 
&lt;h2&gt;Basic installation&lt;/h2&gt; 
&lt;p&gt;To install OSV-Scanner, please refer to the &lt;a href=&quot;https://google.github.io/osv-scanner/installation&quot;&gt;installation section&lt;/a&gt; of our documentation. OSV-Scanner releases can be found on the &lt;a href=&quot;https://github.com/google/osv-scanner/releases&quot;&gt;releases page&lt;/a&gt; of the GitHub repository. The recommended method is to download a prebuilt binary for your platform. Alternatively, you can use &lt;code&gt;go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest&lt;/code&gt; to build it from source.&lt;/p&gt; 
&lt;h2&gt;Key Features&lt;/h2&gt; 
&lt;p&gt;For more information, please read our &lt;a href=&quot;https://google.github.io/osv-scanner&quot;&gt;detailed documentation&lt;/a&gt; to learn how to use OSV-Scanner. For detailed information about each feature, click their titles in this README.&lt;/p&gt; 
&lt;p&gt;Please note: These are the instructions for the latest OSV-Scanner V2 beta. If you are using V1, checkout the V1 &lt;a href=&quot;https://github.com/google/osv-scanner-v1&quot;&gt;README&lt;/a&gt; and &lt;a href=&quot;https://google.github.io/osv-scanner-v1/&quot;&gt;documentation&lt;/a&gt; instead.&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/usage&quot;&gt;Scanning a source directory&lt;/a&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ osv-scanner scan source -r /path/to/your/dir
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This command will recursively scan the specified directory for any supported package files, such as &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;go.mod&lt;/code&gt;, &lt;code&gt;pom.xml&lt;/code&gt;, etc. and output any discovered vulnerabilities.&lt;/p&gt; 
&lt;p&gt;OSV-Scanner has the option of using call analysis to determine if a vulnerable function is actually being used in the project, resulting in fewer false positives, and actionable alerts.&lt;/p&gt; 
&lt;p&gt;OSV-Scanner can also detect vendored C/C++ code for vulnerability scanning. See &lt;a href=&quot;https://google.github.io/osv-scanner/usage/#cc-scanning&quot;&gt;here&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h4&gt;Supported Lockfiles&lt;/h4&gt; 
&lt;p&gt;OSV-Scanner supports 11+ language ecosystems and 19+ lockfile types. To check if your ecosystem is covered, please check out our &lt;a href=&quot;https://google.github.io/osv-scanner/supported-languages-and-lockfiles/#supported-lockfiles&quot;&gt;detailed documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/usage/scan-image&quot;&gt;Container Scanning&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;OSV-Scanner also supports comprehensive, layer-aware scanning for container images to detect vulnerabilities in the following operating system packages and language-specific dependencies.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Distro Support&lt;/th&gt; 
   &lt;th&gt;Language Artifacts Support&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Alpine OS&lt;/td&gt; 
   &lt;td&gt;Go&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Debian&lt;/td&gt; 
   &lt;td&gt;Java&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ubuntu&lt;/td&gt; 
   &lt;td&gt;Node&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;Python&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://google.github.io/osv-scanner/supported-languages-and-lockfiles/#supported-artifacts&quot;&gt;full documentation&lt;/a&gt; for details on support.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ osv-scanner scan image my-image-name:tag
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/8bb95366-27ec-45d1-86ed-e42890f2fb46&quot; alt=&quot;screencast of html output of container scanning&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/usage/license-scanning/&quot;&gt;License Scanning&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Check your dependencies&#39; licenses using deps.dev data. For a summary:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;osv-scanner --licenses path/to/repository
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To check against an allowed license list (SPDX format):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;osv-scanner --licenses=&quot;MIT,Apache-2.0&quot; path/to/directory
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/usage/offline-mode/&quot;&gt;Offline Scanning&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Scan your project against a local OSV database. No network connection is required after the initial database download. The database can also be manually downloaded.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;osv-scanner --offline --download-offline-databases ./path/to/your/dir
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/experimental/guided-remediation/&quot;&gt;Guided Remediation&lt;/a&gt; (Experimental)&lt;/h3&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;Guided remediation (the &lt;code&gt;fix&lt;/code&gt; command) can be risky when run on untrusted projects. It may trigger the package manager to execute scripts or follow external registries specified in the project. Please ensure you trust the source code and artifacts before proceeding.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;OSV-Scanner provides guided remediation, a feature that suggests package version upgrades based on criteria such as dependency depth, minimum severity, fix strategy, and return on investment. We currently support remediating vulnerabilities in the following files:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Ecosystem&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;File Format (Type)&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Supported Remediation Strategies&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;npm&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;package-lock.json&lt;/code&gt; (lockfile)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/experimental/guided-remediation/#in-place-lockfile-changes&quot;&gt;&lt;code&gt;in-place&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;npm&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;package.json&lt;/code&gt; (manifest)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/experimental/guided-remediation/#relock-and-relax-direct-dependencies&quot;&gt;&lt;code&gt;relock&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maven&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;pom.xml&lt;/code&gt; (manifest)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://google.github.io/osv-scanner/experimental/guided-remediation/#override-dependency-versions&quot;&gt;&lt;code&gt;override&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;This is available as a headless CLI command, as well as an interactive mode.&lt;/p&gt; 
&lt;h4&gt;Example (for npm)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ osv-scanner fix \
    --max-depth=3 \
    --min-severity=5 \
    --ignore-dev  \
    --strategy=in-place \
    -L path/to/package-lock.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Interactive mode (for npm)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ osv-scanner fix \
    -M path/to/package.json \
    -L path/to/package-lock.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;img src=&quot;https://google.github.io/osv-scanner/images/guided-remediation-relock-patches.png&quot; alt=&quot;Screenshot of the interactive relock results screen with some relaxation patches selected&quot; /&gt; 
&lt;h2&gt;Data Sources and Privacy&lt;/h2&gt; 
&lt;p&gt;OSV-Scanner communicates with the following external services during operation:&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://osv.dev/&quot;&gt;OSV.dev API&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;The primary data source for vulnerability information. OSV-Scanner queries this API to check packages for known vulnerabilities and to identify vendored C/C++ dependencies. Data sent includes package names, versions, ecosystems, and file hashes. Use &lt;a href=&quot;https://google.github.io/osv-scanner/usage/offline-mode/&quot;&gt;&lt;code&gt;--offline&lt;/code&gt; mode&lt;/a&gt; to disable network requests and scan against a local database instead.&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://docs.deps.dev/api/&quot;&gt;deps.dev API&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Used for supplementary package information:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Dependency resolution&lt;/strong&gt;: Resolves dependency graphs for vulnerability scanning and remediation&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Container image scanning&lt;/strong&gt;: Queries container image metadata for vulnerability detection&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;License scanning&lt;/strong&gt; (&lt;code&gt;--licenses&lt;/code&gt; flag): Retrieves license information for packages&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Package deprecation&lt;/strong&gt;: Checks if packages are deprecated&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Data sent includes package names, versions, and ecosystems. No source code is transmitted.&lt;/p&gt; 
&lt;h3&gt;Package Registries&lt;/h3&gt; 
&lt;p&gt;When using native registry for dependency resolution (instead of deps.dev), OSV-Scanner may query:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Registry&lt;/th&gt; 
   &lt;th&gt;URL&lt;/th&gt; 
   &lt;th&gt;Used For&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Maven Central&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;repo.maven.apache.org/maven2&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Maven package metadata and POM files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;npm Registry&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;registry.npmjs.org&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;npm package metadata&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;PyPI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;pypi.org&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Python package metadata&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Contribute&lt;/h2&gt; 
&lt;h3&gt;Report Problems&lt;/h3&gt; 
&lt;p&gt;If you have what looks like a bug, please use the &lt;a href=&quot;https://github.com/google/osv-scanner/issues&quot;&gt;GitHub issue tracking system&lt;/a&gt;. Before you file an issue, please search existing issues to see if your issue is already covered.&lt;/p&gt; 
&lt;h3&gt;Contributing code to &lt;code&gt;osv-scanner&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/google/osv-scanner/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for documentation on how to contribute code.&lt;/p&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.star-history.com/#google/osv-scanner&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=google/osv-scanner&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/ca82474c961daea048bdbd97e9944685a1dab26effacbb33a2313f3c4c817728/google/osv-scanner" medium="image" />
      
    </item>
    
    <item>
      <title>Wei-Shaw/sub2api</title>
      <link>https://github.com/Wei-Shaw/sub2api</link>
      <description>&lt;p&gt;Sub2API-CRS2 一站式开源中转服务，让 Claude、Openai 、Gemini、Antigravity订阅统一接入，支持拼车共享，更高效分摊成本，原生工具无缝使用。&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Sub2API&lt;/h1&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://golang.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Go-1.25.7-00ADD8.svg?sanitize=true&quot; alt=&quot;Go&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://vuejs.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Vue-3.4+-4FC08D.svg?sanitize=true&quot; alt=&quot;Vue&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.postgresql.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/PostgreSQL-15+-336791.svg?sanitize=true&quot; alt=&quot;PostgreSQL&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://redis.io/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Redis-7+-DC382D.svg?sanitize=true&quot; alt=&quot;Redis&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.docker.com/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Docker-Ready-2496ED.svg?sanitize=true&quot; alt=&quot;Docker&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/21823&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/21823&quot; alt=&quot;Wei-Shaw%2Fsub2api | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;AI API Gateway Platform for Subscription Quota Distribution&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;English | &lt;a href=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/README_CN.md&quot;&gt;中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/README_JA.md&quot;&gt;日本語&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Sub2API officially uses only the domains &lt;code&gt;sub2api.org&lt;/code&gt; and &lt;code&gt;pincc.ai&lt;/code&gt;. Other websites using the Sub2API name may be third-party deployments or services and are not affiliated with this project. Please verify and exercise your own judgment.&lt;/strong&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Demo&lt;/h2&gt; 
&lt;p&gt;Try Sub2API online: &lt;strong&gt;&lt;a href=&quot;https://demo.sub2api.org/&quot;&gt;https://demo.sub2api.org/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Demo credentials (shared demo environment; &lt;strong&gt;not&lt;/strong&gt; created automatically for self-hosted installs):&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Email&lt;/th&gt; 
   &lt;th&gt;Password&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;mailto:admin@sub2api.org&quot;&gt;admin@sub2api.org&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;admin123&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Sub2API is an AI API gateway platform designed to distribute and manage API quotas from AI product subscriptions. Users can access upstream AI services through platform-generated API Keys, while the platform handles authentication, billing, load balancing, and request forwarding.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-Account Management&lt;/strong&gt; - Support multiple upstream account types (OAuth, API Key)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;API Key Distribution&lt;/strong&gt; - Generate and manage API Keys for users&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Precise Billing&lt;/strong&gt; - Token-level usage tracking and cost calculation&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart Scheduling&lt;/strong&gt; - Intelligent account selection with sticky sessions&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Concurrency Control&lt;/strong&gt; - Per-user and per-account concurrency limits&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Rate Limiting&lt;/strong&gt; - Configurable request and token rate limits&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built-in Payment System&lt;/strong&gt; - Supports EasyPay, Alipay, WeChat Pay, and Stripe for user self-service top-up, no separate payment service needed (&lt;a href=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/docs/PAYMENT.md&quot;&gt;Configuration Guide&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Admin Dashboard&lt;/strong&gt; - Web interface for monitoring and management&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;External System Integration&lt;/strong&gt; - Embed external systems (e.g. ticketing) via iframe to extend the admin dashboard&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;❤️ Sponsors&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;a href=&quot;mailto:support@pincc.ai&quot;&gt;Want to appear here?&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot; align=&quot;center&quot; valign=&quot;middle&quot;&gt;&lt;a href=&quot;https://shop.pincc.ai/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/pincc-logo.png&quot; alt=&quot;pincc&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td valign=&quot;middle&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://shop.pincc.ai/&quot;&gt;PinCC&lt;/a&gt;&lt;/b&gt; is the official relay service built on Sub2API, offering stable access to Claude Code, Codex, Gemini and other popular models — ready to use, no deployment or maintenance required.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://www.packyapi.com/register?aff=sub2api&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/packycode.png&quot; alt=&quot;PackyCode&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to PackyCode for sponsoring this project! PackyCode is a reliable and efficient API relay service provider, offering relay services for Claude Code, Codex, Gemini, and more. PackyCode provides special discounts for our software users: register using &lt;a href=&quot;https://www.packyapi.com/register?aff=sub2api&quot;&gt;this link&lt;/a&gt; and enter the &quot;sub2api&quot; promo code during first recharge to get 10% off.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://ctok.ai&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/ctok.png&quot; alt=&quot;CTok&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to CTok.ai for sponsoring this project! CTok.ai is dedicated to building a one-stop AI programming tool service platform. We offer professional Claude Code packages and technical community services, with support for Google Gemini and OpenAI Codex. Through carefully designed plans and a professional tech community, we provide developers with reliable service guarantees and continuous technical support, making AI-assisted programming a true productivity tool. Click &lt;a href=&quot;https://ctok.ai&quot;&gt;here&lt;/a&gt; to register!&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://aigocode.com/invite/SUB2API&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/aigocode.png&quot; alt=&quot;AIGoCode&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to AIGoCode for sponsoring this project! AIGoCode is an all-in-one platform that integrates Claude Code, Codex, and the latest Gemini models, providing you with stable, efficient, and highly cost-effective AI coding services. The platform offers flexible subscription plans, zero risk of account suspension, direct access with no VPN required, and lightning-fast responses. AIGoCode has prepared a special benefit for sub2api users: if you register via &lt;a href=&quot;https://aigocode.com/invite/SUB2API&quot;&gt;this link&lt;/a&gt;, you&#39;ll receive an extra 10% bonus credit on your first top-up!&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://code.silkapi.com/register?aff=SUB2API&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/silkapi.png&quot; alt=&quot;silkapi&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to SilkAPI for sponsoring this project! &lt;a href=&quot;https://code.silkapi.com/register?aff=SUB2API&quot;&gt;SilkAPI&lt;/a&gt; is a relay service built on Sub2API, specializing in providing high-speed and stable Codex API relay.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://ylscode.com/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/ylscode.png&quot; alt=&quot;ylscode&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to YLS Code for sponsoring this project! &lt;a href=&quot;https://ylscode.com/&quot;&gt;YLS Code&lt;/a&gt; is dedicated to building secure enterprise-grade Coding Agent productivity services, offering stable and fast Codex / Claude / Gemini subscription services along with pay-as-you-go API options for flexible choices. Register now for a limited-time 3-day Codex trial bonus!&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://www.aicodemirror.com/register?invitecode=KMVZQM&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/AICodeMirror.jpg&quot; alt=&quot;AICodeMirror&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to AICodeMirror for sponsoring this project! AICodeMirror provides official high-stability relay services for Claude Code / Codex / Gemini CLI, with enterprise-grade concurrency, fast invoicing, and 24/7 dedicated technical support. Claude Code / Codex / Gemini official channels at 38% / 2% / 9% of original price, with extra discounts on top-ups! AICodeMirror offers special benefits for sub2api users: register via &lt;a href=&quot;https://www.aicodemirror.com/register?invitecode=KMVZQM&quot;&gt;this link&lt;/a&gt; to enjoy 20% off your first top-up, and enterprise customers can get up to 25% off!&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://shop.bmoplus.com/?utm_source=github&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/bmoplus.jpg&quot; alt=&quot;bmoplus&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Huge thanks to BmoPlus for sponsoring this project! BmoPlus is a highly reliable AI account provider built strictly for heavy AI users and developers. They offer rock-solid, ready-to-use accounts and official top-up services for ChatGPT Plus / ChatGPT Pro (Full Warranty) / Claude Pro / Super Grok / Gemini Pro. By registering and ordering through &lt;a href=&quot;https://shop.bmoplus.com/?utm_source=github&quot;&gt;BmoPlus - Premium AI Accounts &amp;amp; Top-ups&lt;/a&gt;, users can unlock the mind-blowing rate of 10% of the official GPT subscription price (90% OFF)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://bestproxy.com/?keyword=a2e8iuol&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/bestproxy.png&quot; alt=&quot;bestproxy&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to Bestproxy for sponsoring this project! &lt;a href=&quot;https://bestproxy.com/?keyword=a2e8iuol&quot;&gt;Bestproxy&lt;/a&gt; provides high-purity residential IPs with dedicated one-IP-per-account support. By combining real home networks with fingerprint isolation, it enables link environment isolation and reduces the probability of association-based risk control.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://pateway.ai/?ch=1tsfr51&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/pateway.png&quot; alt=&quot;pateway&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to PatewayAI for sponsoring this project! PatewayAI is a premium model API relay service provider built for heavy AI developers, focused on direct official connections. Offering the full Claude series and Codex series models, 100% sourced directly from official providers — no dilution, no substitution, open to verification. Billing is fully transparent with token-level invoices that can be audited line by line. Enterprise-grade high concurrency is also supported, with a dedicated management platform for enterprise clients. Enterprise customers can sign formal contracts and receive invoices. Visit the official website for more details and contact information. Register now via &lt;a href=&quot;https://pateway.ai/?ch=1tsfr51&quot;&gt;this link&lt;/a&gt; to receive $3 in trial credits. User top-ups start as low as 60% off, and referring friends earns both parties rewards — referral bonuses up to $150.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;180&quot;&gt;&lt;a href=&quot;https://api.pptoken.org/register?promo=SUB2API&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/pptoken.png&quot; alt=&quot;pptoken&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to PPToken.org for sponsoring this project! &lt;a href=&quot;https://api.pptoken.org/register?promo=SUB2API&quot;&gt;PPToken.org&lt;/a&gt; specializes in GPT model API relay services, supporting Codex, Claude Code, OpenAI-compatible clients, and Gemini CLI integration. Top-ups are 1:1 (¥1 = $1 credit); GPT models start at 0.16x rate multiplier, with overall cost at roughly 2.2% of official pricing and first-token latency around 1 second — ideal for developers seeking low-cost, high-speed access to GPT model capabilities. Technical support: 24/7 real human responses (no bots), @tech in the group chat and get a reply within 10 minutes. Sponsor benefit: the first 200 users who register via the &lt;a href=&quot;https://api.pptoken.org/register?promo=SUB2API&quot;&gt;exclusive registration link&lt;/a&gt; and enter promo code `SUB2API` can claim free Codex / Claude Code trial credits — no minimum spend, no card required. &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;Ecosystem&lt;/h2&gt; 
&lt;p&gt;Community projects that extend or integrate with Sub2API:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Project&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Features&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;s&gt;&lt;a href=&quot;https://github.com/touwaeriol/sub2apipay&quot;&gt;Sub2ApiPay&lt;/a&gt;&lt;/s&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;s&gt;Self-service payment system&lt;/s&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Now Built-in&lt;/strong&gt; — Payment is now integrated into Sub2API, no separate deployment needed. See &lt;a href=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/docs/PAYMENT.md&quot;&gt;Payment Configuration Guide&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/ckken/sub2api-mobile&quot;&gt;sub2api-mobile&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Mobile admin console&lt;/td&gt; 
   &lt;td&gt;Cross-platform app (iOS/Android/Web) for user management, account management, monitoring dashboard, and multi-backend switching; built with Expo + React Native&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Component&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;Backend&lt;/td&gt; 
   &lt;td&gt;Go 1.25.7, Gin, Ent&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Frontend&lt;/td&gt; 
   &lt;td&gt;Vue 3.4+, Vite 5+, TailwindCSS&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Database&lt;/td&gt; 
   &lt;td&gt;PostgreSQL 15+&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cache/Queue&lt;/td&gt; 
   &lt;td&gt;Redis 7+&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Nginx Reverse Proxy Note&lt;/h2&gt; 
&lt;p&gt;When using Nginx as a reverse proxy for Sub2API (or CRS) with Codex CLI, add the following to the &lt;code&gt;http&lt;/code&gt; block in your Nginx configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-nginx&quot;&gt;underscores_in_headers on;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Nginx drops headers containing underscores by default (e.g. &lt;code&gt;session_id&lt;/code&gt;), which breaks sticky session routing in multi-account setups.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Deployment&lt;/h2&gt; 
&lt;h3&gt;Method 1: Script Installation (Recommended)&lt;/h3&gt; 
&lt;p&gt;One-click installation script that downloads pre-built binaries from GitHub Releases.&lt;/p&gt; 
&lt;h4&gt;Prerequisites&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linux server (amd64 or arm64)&lt;/li&gt; 
 &lt;li&gt;PostgreSQL 15+ (installed and running)&lt;/li&gt; 
 &lt;li&gt;Redis 7+ (installed and running)&lt;/li&gt; 
 &lt;li&gt;Root privileges&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Installation Steps&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/install.sh | sudo bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The script will:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Detect your system architecture&lt;/li&gt; 
 &lt;li&gt;Download the latest release&lt;/li&gt; 
 &lt;li&gt;Install binary to &lt;code&gt;/opt/sub2api&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Create systemd service&lt;/li&gt; 
 &lt;li&gt;Configure system user and permissions&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Post-Installation&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Start the service
sudo systemctl start sub2api

# 2. Enable auto-start on boot
sudo systemctl enable sub2api

# 3. Open Setup Wizard in browser
# http://YOUR_SERVER_IP:8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The Setup Wizard will guide you through:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Database configuration&lt;/li&gt; 
 &lt;li&gt;Redis configuration&lt;/li&gt; 
 &lt;li&gt;Admin account creation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Upgrade&lt;/h4&gt; 
&lt;p&gt;You can upgrade directly from the &lt;strong&gt;Admin Dashboard&lt;/strong&gt; by clicking the &lt;strong&gt;Check for Updates&lt;/strong&gt; button in the top-left corner.&lt;/p&gt; 
&lt;p&gt;The web interface will:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check for new versions automatically&lt;/li&gt; 
 &lt;li&gt;Download and apply updates with one click&lt;/li&gt; 
 &lt;li&gt;Support rollback if needed&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Useful Commands&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Check status
sudo systemctl status sub2api

# View logs
sudo journalctl -u sub2api -f

# Restart service
sudo systemctl restart sub2api

# Uninstall
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/install.sh | sudo bash -s -- uninstall -y
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Method 2: Docker Compose (Recommended)&lt;/h3&gt; 
&lt;p&gt;Deploy with Docker Compose, including PostgreSQL and Redis containers.&lt;/p&gt; 
&lt;h4&gt;Prerequisites&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Docker 20.10+&lt;/li&gt; 
 &lt;li&gt;Docker Compose v2+&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Quick Start (One-Click Deployment)&lt;/h4&gt; 
&lt;p&gt;Use the automated deployment script for easy setup:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Create deployment directory
mkdir -p sub2api-deploy &amp;amp;&amp;amp; cd sub2api-deploy

# Download and run deployment preparation script
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash

# Start services
docker compose up -d

# View logs
docker compose logs -f sub2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;What the script does:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Downloads &lt;code&gt;docker-compose.local.yml&lt;/code&gt; (saved as &lt;code&gt;docker-compose.yml&lt;/code&gt;) and &lt;code&gt;.env.example&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Generates secure credentials (JWT_SECRET, TOTP_ENCRYPTION_KEY, POSTGRES_PASSWORD)&lt;/li&gt; 
 &lt;li&gt;Creates &lt;code&gt;.env&lt;/code&gt; file with auto-generated secrets&lt;/li&gt; 
 &lt;li&gt;Creates data directories (uses local directories for easy backup/migration)&lt;/li&gt; 
 &lt;li&gt;Displays generated credentials for your reference&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Manual Deployment&lt;/h4&gt; 
&lt;p&gt;If you prefer manual setup:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Clone the repository
git clone https://github.com/Wei-Shaw/sub2api.git
cd sub2api/deploy

# 2. Copy environment configuration
cp .env.example .env

# 3. Edit configuration (generate secure passwords)
nano .env
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Required configuration in &lt;code&gt;.env&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# PostgreSQL password (REQUIRED)
POSTGRES_PASSWORD=your_secure_password_here

# JWT Secret (RECOMMENDED - keeps users logged in after restart)
JWT_SECRET=your_jwt_secret_here

# TOTP Encryption Key (RECOMMENDED - preserves 2FA after restart)
TOTP_ENCRYPTION_KEY=your_totp_key_here

# Optional: Admin account
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=your_admin_password

# Optional: Custom port
SERVER_PORT=8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Generate secure secrets:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Generate JWT_SECRET
openssl rand -hex 32

# Generate TOTP_ENCRYPTION_KEY
openssl rand -hex 32

# Generate POSTGRES_PASSWORD
openssl rand -hex 32
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 4. Create data directories (for local version)
mkdir -p data postgres_data redis_data

# 5. Start all services
# Option A: Local directory version (recommended - easy migration)
docker compose -f docker-compose.local.yml up -d

# Option B: Named volumes version (simple setup)
docker compose up -d

# 6. Check status
docker compose -f docker-compose.local.yml ps

# 7. View logs
docker compose -f docker-compose.local.yml logs -f sub2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Deployment Versions&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Version&lt;/th&gt; 
   &lt;th&gt;Data Storage&lt;/th&gt; 
   &lt;th&gt;Migration&lt;/th&gt; 
   &lt;th&gt;Best For&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;docker-compose.local.yml&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Local directories&lt;/td&gt; 
   &lt;td&gt;✅ Easy (tar entire directory)&lt;/td&gt; 
   &lt;td&gt;Production, frequent backups&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;docker-compose.yml&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Named volumes&lt;/td&gt; 
   &lt;td&gt;⚠️ Requires docker commands&lt;/td&gt; 
   &lt;td&gt;Simple setup&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Use &lt;code&gt;docker-compose.local.yml&lt;/code&gt; (deployed by script) for easier data management.&lt;/p&gt; 
&lt;h4&gt;Access&lt;/h4&gt; 
&lt;p&gt;Open &lt;code&gt;http://YOUR_SERVER_IP:8080&lt;/code&gt; in your browser.&lt;/p&gt; 
&lt;p&gt;If admin password was auto-generated, find it in logs:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose.local.yml logs sub2api | grep &quot;admin password&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Upgrade&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Pull latest image and recreate container
docker compose -f docker-compose.local.yml pull
docker compose -f docker-compose.local.yml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Easy Migration (Local Directory Version)&lt;/h4&gt; 
&lt;p&gt;When using &lt;code&gt;docker-compose.local.yml&lt;/code&gt;, migrate to a new server easily:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# On source server
docker compose -f docker-compose.local.yml down
cd ..
tar czf sub2api-complete.tar.gz sub2api-deploy/

# Transfer to new server
scp sub2api-complete.tar.gz user@new-server:/path/

# On new server
tar xzf sub2api-complete.tar.gz
cd sub2api-deploy/
docker compose -f docker-compose.local.yml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Useful Commands&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Stop all services
docker compose -f docker-compose.local.yml down

# Restart
docker compose -f docker-compose.local.yml restart

# View all logs
docker compose -f docker-compose.local.yml logs -f

# Remove all data (caution!)
docker compose -f docker-compose.local.yml down
rm -rf data/ postgres_data/ redis_data/
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Method 3: Build from Source&lt;/h3&gt; 
&lt;p&gt;Build and run from source code for development or customization.&lt;/p&gt; 
&lt;h4&gt;Prerequisites&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Go 1.21+&lt;/li&gt; 
 &lt;li&gt;Node.js 18+&lt;/li&gt; 
 &lt;li&gt;PostgreSQL 15+&lt;/li&gt; 
 &lt;li&gt;Redis 7+&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Build Steps&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Clone the repository
git clone https://github.com/Wei-Shaw/sub2api.git
cd sub2api

# 2. Install pnpm (if not already installed)
npm install -g pnpm

# 3. Build frontend
cd frontend
pnpm install
pnpm run build
# Output will be in ../backend/internal/web/dist/

# 4. Build backend with embedded frontend
cd ../backend
go build -tags embed -o sub2api ./cmd/server

# 5. Create configuration file
cp ../deploy/config.example.yaml ./config.yaml

# 6. Edit configuration
nano config.yaml
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The &lt;code&gt;-tags embed&lt;/code&gt; flag embeds the frontend into the binary. Without this flag, the binary will not serve the frontend UI.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;Key configuration in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;server:
  host: &quot;0.0.0.0&quot;
  port: 8080
  mode: &quot;release&quot;

database:
  host: &quot;localhost&quot;
  port: 5432
  user: &quot;postgres&quot;
  password: &quot;your_password&quot;
  dbname: &quot;sub2api&quot;

redis:
  host: &quot;localhost&quot;
  port: 6379
  password: &quot;&quot;

jwt:
  secret: &quot;change-this-to-a-secure-random-string&quot;
  expire_hour: 24

default:
  user_concurrency: 5
  user_balance: 0
  api_key_prefix: &quot;sk-&quot;
  rate_multiplier: 1.0
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Sora Status (Temporarily Unavailable)&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ Sora-related features are temporarily unavailable due to technical issues in upstream integration and media delivery. Please do not rely on Sora in production at this time. Existing &lt;code&gt;gateway.sora_*&lt;/code&gt; configuration keys are reserved and may not take effect until these issues are resolved.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Additional security-related options are available in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;cors.allowed_origins&lt;/code&gt; for CORS allowlist&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security.url_allowlist&lt;/code&gt; for upstream/pricing/CRS host allowlists&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security.url_allowlist.enabled&lt;/code&gt; to disable URL validation (use with caution)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security.url_allowlist.allow_insecure_http&lt;/code&gt; to allow HTTP URLs when validation is disabled&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security.url_allowlist.allow_private_hosts&lt;/code&gt; to allow private/local IP addresses&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security.response_headers.enabled&lt;/code&gt; to enable configurable response header filtering (disabled uses default allowlist)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security.csp&lt;/code&gt; to control Content-Security-Policy headers&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;billing.circuit_breaker&lt;/code&gt; to fail closed on billing errors&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;server.trusted_proxies&lt;/code&gt; to enable X-Forwarded-For parsing&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;turnstile.required&lt;/code&gt; to require Turnstile in release mode&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;⚠️ Security Warning: HTTP URL Configuration&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;When &lt;code&gt;security.url_allowlist.enabled=false&lt;/code&gt;, the system performs minimal URL validation by default, &lt;strong&gt;rejecting HTTP URLs&lt;/strong&gt; and only allowing HTTPS. To allow HTTP URLs (e.g., for development or internal testing), you must explicitly set:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;security:
  url_allowlist:
    enabled: false                # Disable allowlist checks
    allow_insecure_http: true     # Allow HTTP URLs (⚠️ INSECURE)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Or via environment variable:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;SECURITY_URL_ALLOWLIST_ENABLED=false
SECURITY_URL_ALLOWLIST_ALLOW_INSECURE_HTTP=true
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Risks of allowing HTTP:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;API keys and data transmitted in &lt;strong&gt;plaintext&lt;/strong&gt; (vulnerable to interception)&lt;/li&gt; 
 &lt;li&gt;Susceptible to &lt;strong&gt;man-in-the-middle (MITM) attacks&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;NOT suitable for production&lt;/strong&gt; environments&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;When to use HTTP:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;✅ Development/testing with local servers (&lt;a href=&quot;http://localhost&quot;&gt;http://localhost&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;✅ Internal networks with trusted endpoints&lt;/li&gt; 
 &lt;li&gt;✅ Testing account connectivity before obtaining HTTPS&lt;/li&gt; 
 &lt;li&gt;❌ Production environments (use HTTPS only)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Example error without this setting:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Invalid base URL: invalid url scheme: http
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you disable URL validation or response header filtering, harden your network layer:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Enforce an egress allowlist for upstream domains/IPs&lt;/li&gt; 
 &lt;li&gt;Block private/loopback/link-local ranges&lt;/li&gt; 
 &lt;li&gt;Enforce TLS-only outbound traffic&lt;/li&gt; 
 &lt;li&gt;Strip sensitive upstream response headers at the proxy&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 6. Run the application
./sub2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Development Mode&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Backend (with hot reload)
cd backend
go run ./cmd/server

# Frontend (with hot reload)
cd frontend
pnpm run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Code Generation&lt;/h4&gt; 
&lt;p&gt;When editing &lt;code&gt;backend/ent/schema&lt;/code&gt;, regenerate Ent + Wire:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd backend
go generate ./ent
go generate ./cmd/server
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Simple Mode&lt;/h2&gt; 
&lt;p&gt;Simple Mode is designed for individual developers or internal teams who want quick access without full SaaS features.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Enable: Set environment variable &lt;code&gt;RUN_MODE=simple&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Difference: Hides SaaS-related features and skips billing process&lt;/li&gt; 
 &lt;li&gt;Security note: In production, you must also set &lt;code&gt;SIMPLE_MODE_CONFIRM=true&lt;/code&gt; to allow startup&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Antigravity Support&lt;/h2&gt; 
&lt;p&gt;Sub2API supports &lt;a href=&quot;https://antigravity.so/&quot;&gt;Antigravity&lt;/a&gt; accounts. After authorization, dedicated endpoints are available for Claude and Gemini models.&lt;/p&gt; 
&lt;h3&gt;Dedicated Endpoints&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Endpoint&lt;/th&gt; 
   &lt;th&gt;Model&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/antigravity/v1/messages&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Claude models&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/antigravity/v1beta/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Gemini models&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Claude Code Configuration&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export ANTHROPIC_BASE_URL=&quot;http://localhost:8080/antigravity&quot;
export ANTHROPIC_AUTH_TOKEN=&quot;sk-xxx&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Hybrid Scheduling Mode&lt;/h3&gt; 
&lt;p&gt;Antigravity accounts support optional &lt;strong&gt;hybrid scheduling&lt;/strong&gt;. When enabled, the general endpoints &lt;code&gt;/v1/messages&lt;/code&gt; and &lt;code&gt;/v1beta/&lt;/code&gt; will also route requests to Antigravity accounts.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;⚠️ Warning&lt;/strong&gt;: Anthropic Claude and Antigravity Claude &lt;strong&gt;cannot be mixed within the same conversation context&lt;/strong&gt;. Use groups to isolate them properly.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Known Issues&lt;/h3&gt; 
&lt;p&gt;In Claude Code, Plan Mode cannot exit automatically. (Normally when using the native Claude API, after planning is complete, Claude Code will pop up options for users to approve or reject the plan.)&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Workaround&lt;/strong&gt;: Press &lt;code&gt;Shift + Tab&lt;/code&gt; to manually exit Plan Mode, then type your response to approve or reject the plan.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Project Structure&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;sub2api/
├── backend/                  # Go backend service
│   ├── cmd/server/           # Application entry
│   ├── internal/             # Internal modules
│   │   ├── config/           # Configuration
│   │   ├── model/            # Data models
│   │   ├── service/          # Business logic
│   │   ├── handler/          # HTTP handlers
│   │   └── gateway/          # API gateway core
│   └── resources/            # Static resources
│
├── frontend/                 # Vue 3 frontend
│   └── src/
│       ├── api/              # API calls
│       ├── stores/           # State management
│       ├── views/            # Page components
│       └── components/       # Reusable components
│
└── deploy/                   # Deployment files
    ├── docker-compose.yml    # Docker Compose configuration
    ├── .env.example          # Environment variables for Docker Compose
    ├── config.example.yaml   # Full config file for binary deployment
    └── install.sh            # One-click installation script
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Disclaimer&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Please read carefully before using this project:&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;🚨 &lt;strong&gt;Terms of Service Risk&lt;/strong&gt;: Using this project may violate Anthropic&#39;s Terms of Service. Please read Anthropic&#39;s user agreement carefully before use. All risks arising from the use of this project are borne solely by the user.&lt;/p&gt; 
 &lt;p&gt;📖 &lt;strong&gt;Disclaimer&lt;/strong&gt;: This project is for technical learning and research purposes only. The author assumes no responsibility for account suspension, service interruption, or any other losses caused by the use of this project.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://star-history.com/#Wei-Shaw/sub2api&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=Wei-Shaw/sub2api&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=Wei-Shaw/sub2api&amp;amp;type=Date&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=Wei-Shaw/sub2api&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the &lt;a href=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/LICENSE&quot;&gt;GNU Lesser General Public License v3.0&lt;/a&gt; (or later).&lt;/p&gt; 
&lt;p&gt;Copyright (c) 2026 Wesley Liddick&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;strong&gt;If you find this project useful, please give it a star!&lt;/strong&gt;&lt;/p&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/f21f7491998c581b463346ab7d2177118a817031dbcfcb8a754c30276ca747a3/Wei-Shaw/sub2api" medium="image" />
      
    </item>
    
    <item>
      <title>Tencent/WeKnora</title>
      <link>https://github.com/Tencent/WeKnora</link>
      <description>&lt;p&gt;Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/logo.png&quot; alt=&quot;WeKnora Logo&quot; height=&quot;120&quot; /&gt; 
 &lt;/picture&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;a href=&quot;https://trendshift.io/repositories/15289&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/15289&quot; alt=&quot;Tencent%2FWeKnora | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt; &lt;/a&gt; 
 &lt;/picture&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://weknora.weixin.qq.com&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;Official Website&quot; src=&quot;https://img.shields.io/badge/Official Website-WeKnora-4e6b99&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://chatbot.weixin.qq.com&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;WeChat Dialog Open Platform&quot; src=&quot;https://img.shields.io/badge/WeChat Dialog Open Platform-5ac725&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://chromewebstore.google.com/detail/jpemjbopikggjlmikmclgbmkhhopjdgd&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;Chrome Extension&quot; src=&quot;https://img.shields.io/badge/Chrome Extension-WeKnora-4285F4&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://clawhub.ai/lyingbug/weknora&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;ClawHub Skill&quot; src=&quot;https://img.shields.io/badge/ClawHub Skill-WeKnora-ff6b35&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/Tencent/WeKnora/raw/main/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/License-MIT-ffffff?labelColor=d4eaf7&amp;amp;color=2e6cc4&quot; alt=&quot;License&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/CHANGELOG.md&quot;&gt; &lt;img alt=&quot;Version&quot; src=&quot;https://img.shields.io/badge/version-0.5.2-2e6cc4?labelColor=d4eaf7&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; | &lt;b&gt;English&lt;/b&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/README_CN.md&quot;&gt;&lt;b&gt;简体中文&lt;/b&gt;&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/README_JA.md&quot;&gt;&lt;b&gt;日本語&lt;/b&gt;&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/README_KO.md&quot;&gt;&lt;b&gt;한국어&lt;/b&gt;&lt;/a&gt; | &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;/p&gt;
&lt;h4 align=&quot;center&quot;&gt; &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/#-overview&quot;&gt;Overview&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/#-architecture&quot;&gt;Architecture&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/#-key-features&quot;&gt;Key Features&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/#-getting-started&quot;&gt;Getting Started&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/#-api-reference&quot;&gt;API Reference&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/#-developer-guide&quot;&gt;Developer Guide&lt;/a&gt;&lt;/p&gt; &lt;/h4&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;h1&gt;💡 WeKnora — Turn Documents into Living Knowledge with RAG, Agents and Auto-Wiki&lt;/h1&gt; 
&lt;h2&gt;📌 Overview&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://weknora.weixin.qq.com&quot;&gt;&lt;strong&gt;WeKnora&lt;/strong&gt;&lt;/a&gt; is an open-source, LLM-powered knowledge framework built for enterprise-grade document understanding, semantic retrieval, and autonomous reasoning.&lt;/p&gt; 
&lt;p&gt;It is organized around three core capabilities: &lt;strong&gt;RAG-based Quick Q&amp;amp;A&lt;/strong&gt; for everyday lookups, a &lt;strong&gt;ReAct Agent&lt;/strong&gt; that autonomously orchestrates retrieval, MCP tools and web search to handle complex multi-step tasks, and a brand-new &lt;strong&gt;Wiki Mode&lt;/strong&gt; in which agents distill raw documents into a self-maintaining, interlinked markdown knowledge base with an interactive knowledge graph. Combined with multi-source ingestion (Feishu / Notion / Yuque, and growing), 20+ LLM provider integrations, full Langfuse observability, and a fully self-hostable modular architecture, WeKnora turns scattered documents into a queryable, reasoning-capable, continuously evolving knowledge asset.&lt;/p&gt; 
&lt;p&gt;The framework supports auto-syncing knowledge from Feishu, Notion, and Yuque (more data sources coming soon), handles 10+ document formats including PDF, Word, images, and Excel, and can serve Q&amp;amp;A directly through IM channels like WeCom, Feishu, Slack, and Telegram. It is compatible with major LLM providers including OpenAI, DeepSeek, Qwen (Alibaba Cloud), Zhipu, Hunyuan, Gemini, MiniMax, NVIDIA, and Ollama. Its fully modular design allows swapping LLMs, vector databases, and storage backends, with support for local and private cloud deployment ensuring complete data sovereignty. WeKnora also integrates with &lt;strong&gt;Langfuse&lt;/strong&gt; for comprehensive observability into agent reasoning, token usage, and pipeline tracing.&lt;/p&gt; 
&lt;h2&gt;✨ Latest Updates&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;v0.5.2 Highlights:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Wiki Mode at Scale&lt;/strong&gt;: Wiki ingest now handles tens-of-thousands-document KBs via a generic task queue with dead-letter handling; the page-link graph gains a subgraph API + interactive exploration UI.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;MCP Human-in-the-Loop Approval&lt;/strong&gt;: Sensitive MCP tool calls pause the agent and wait for explicit user approval in the chat UI.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;More LLM / Vector DB / Storage / Search&lt;/strong&gt;: Anthropic (Claude), Apache Doris 4.1, Tencent VectorDB, Kingsoft Cloud KS3, and SearXNG are all new backends — pairing with the Vector Store management UI and per-KB indexing strategy toggles.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Deeper Observability&lt;/strong&gt;: Langfuse spans expanded across retrieval / rerank / agent stages; end-to-end TTFB logged on both ends of the chat stream; LLM call timeouts hardened to keep worker pools healthy.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Adaptive 3-Tier Chunking&lt;/strong&gt;: Documents are auto-routed to heading-aware / heuristic / recursive strategies, with a live preview panel in the KB editor. See &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/CHUNKING.md&quot;&gt;&lt;code&gt;docs/CHUNKING.md&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Global Command Palette&lt;/strong&gt;: A ⌘K palette replaces the standalone search page and can start a new chat directly from any result.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;More Connectors &amp;amp; Mobile&lt;/strong&gt;: Yuque connector (full + incremental sync) joins Feishu / Notion; lightweight WeChat Mini Program client under &lt;code&gt;miniprogram/&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;weknora&lt;/code&gt; CLI (Preview)&lt;/strong&gt;: An early version of the official command-line client lives under &lt;code&gt;cli/&lt;/code&gt; — feedback welcome.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Other Improvements&lt;/strong&gt;: Per-tenant RRF tuning, a dedicated query-understanding model, batch KB management, user-scoped session pinning, a tenant-wide IM channels overview, per-user font / theme preferences, a new OpenMaiC Classroom agent skill, and a full API-docs / Swagger / Client-SDK overhaul.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;: Embedder &lt;code&gt;(nil, nil)&lt;/code&gt; SIGSEGV fixed; Mimo / DeepSeek &lt;code&gt;reasoning_content&lt;/code&gt; round-trip restored; multi-turn agent history rebuilt from DB (with attachment replay); OIDC login fixed; many Wiki ingest reliability fixes; FAQ no longer hallucinates summaries from filenames on empty PDFs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Earlier Releases&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;v0.4.0 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://weknora.weixin.qq.com/platform&quot;&gt;Knowledge Assistant&lt;/a&gt;&lt;/strong&gt;: Cloud-hosted knowledge assistant service for quick onboarding without local deployment&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;WeKnora Cloud&lt;/strong&gt;: WeKnora Cloud provider with hosted LLM models and document parsing service, credential management and status checks&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://chromewebstore.google.com/detail/jpemjbopikggjlmikmclgbmkhhopjdgd&quot;&gt;Chrome Extension&lt;/a&gt;&lt;/strong&gt;: Browser extension for web page knowledge capture&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://clawhub.ai/lyingbug/weknora&quot;&gt;ClawHub Skill&lt;/a&gt;&lt;/strong&gt;: ClawHub Skill marketplace integration for one-click agent skill installation&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;WeChat IM Integration&lt;/strong&gt;: WeChat channel adapter with QR code login and long-polling message support&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Attachment Processing&lt;/strong&gt;: File attachment support in chat pipeline with content formatting and metadata injection&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Azure OpenAI Provider&lt;/strong&gt;: Full Azure OpenAI support for chat, VLM, and embedding models with deployment name preservation and dimensions parameter&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Alibaba Cloud OSS Storage&lt;/strong&gt;: Object storage support via S3-compatible mode with configuration UI, connectivity test, and multi-language i18n&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Notion Connector&lt;/strong&gt;: Notion data source integration with API client, markdown renderer, and Connector interface&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Baidu &amp;amp; Ollama Web Search&lt;/strong&gt;: Added Baidu and Ollama as web search providers&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;VectorStore Management&lt;/strong&gt;: Full VectorStore CRUD with entity, repository, service layer, connection testing, and API endpoints&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;: Fixed Azure OpenAI endpoint handling, embedding truncation, IM citation tag stripping, neo4j Go 1.24 Windows compatibility, and OSS signature issues&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.3.6 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;ASR (Automatic Speech Recognition)&lt;/strong&gt;: Integrated ASR model support with audio file upload, in-document audio preview, and transcription capabilities&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Data Source Auto-Sync (Feishu)&lt;/strong&gt;: Complete data source management with Feishu Wiki/Drive auto-sync, incremental and full sync, sync logs, and tenant isolation&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;OIDC Authentication&lt;/strong&gt;: OpenID Connect login support with auto-discovery, custom endpoints, and user info mapping&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;IM Quote/Reply Context&lt;/strong&gt;: Quoted messages extracted in IM channels and injected into LLM prompts for contextual replies; anti-hallucination for non-text quotes&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Thread-Based IM Sessions&lt;/strong&gt;: Per-thread session mode for IM channels (Slack, Mattermost, Feishu, Telegram), enabling multi-user collaboration within threads&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Document Summarization&lt;/strong&gt;: AI-generated document summaries with configurable input limits and a dedicated summary section in document detail view&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Tavily Web Search&lt;/strong&gt;: Added Tavily as a web search provider; refactored web search provider architecture for extensibility&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;MCP Auto-Reconnection&lt;/strong&gt;: Automatic reconnection for MCP tool calls when server connection is lost&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Parallel Tool Calling&lt;/strong&gt;: Concurrent execution of multiple agent tool calls via errgroup for faster complex task handling&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Agent @Mention Scope Restriction&lt;/strong&gt;: User @mentions restricted to agent&#39;s allowed knowledge base scope, preventing unauthorized access&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Login Page Performance&lt;/strong&gt;: Removed all backdrop-filter blur effects, reduced animations, added GPU compositing hints for faster page load&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.3.5 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Telegram, DingTalk &amp;amp; Mattermost IM Integration&lt;/strong&gt;: Added Telegram bot (webhook/long-polling, streaming via editMessageText), DingTalk bot (webhook/Stream mode, AI Card streaming), and Mattermost adapter; IM channel coverage now includes WeCom, Feishu, Slack, Telegram, DingTalk, and Mattermost&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;IM Slash Commands &amp;amp; QA Queue&lt;/strong&gt;: Pluggable slash-command system (/help, /info, /search, /stop, /clear) with a bounded QA worker pool, per-user rate limiting, and Redis-based multi-instance coordination&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Suggested Questions&lt;/strong&gt;: Agents surface context-aware suggested questions based on configured knowledge bases; image knowledge automatically enqueues question generation&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;VLM Auto-Describe MCP Tool Images&lt;/strong&gt;: When MCP tools return images, the agent generates text descriptions via the configured VLM model, enabling image content to be used by text-only LLMs&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Novita AI Provider&lt;/strong&gt;: New LLM provider with OpenAI-compatible API supporting chat, embedding, and VLLM model types&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;MCP Tool Name Stability&lt;/strong&gt;: Tool names now based on service name (stable across reconnections) instead of UUID; unique name constraint added; frontend formats names into human-readable form&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Channel Tracking&lt;/strong&gt;: Knowledge entries and messages record source channel (web/api/im/browser_extension) for traceability&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;: Fixed agent empty response when no knowledge base is configured, UTF-8 truncation in summaries for Chinese/emoji documents, API key encryption loss on tenant settings update, vLLM streaming reasoning content propagation, and rerank empty passage errors&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.3.4 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;IM Bot Integration&lt;/strong&gt;: WeCom, Feishu, and Slack IM channel support with WebSocket/Webhook modes, streaming, and knowledge base integration&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Multimodal Image Support&lt;/strong&gt;: Image upload and multimodal image processing with enhanced session management&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Manual Knowledge Download&lt;/strong&gt;: Download manual knowledge content as files with proper filename sanitization&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;NVIDIA Model API&lt;/strong&gt;: Support NVIDIA chat model API with custom endpoint and VLM model configuration&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Weaviate Vector DB&lt;/strong&gt;: Added Weaviate as a new vector database backend for knowledge retrieval&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;AWS S3 Storage&lt;/strong&gt;: Integrated AWS S3 storage adapter with configuration UI and database migrations&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;AES-256-GCM Encryption&lt;/strong&gt;: API keys encrypted at rest with AES-256-GCM for enhanced security&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Built-in MCP Service&lt;/strong&gt;: Built-in MCP service support for extending agent capabilities&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Hybrid Search Optimization&lt;/strong&gt;: Grouped targets and reused query embeddings for better retrieval performance&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Final Answer Tool&lt;/strong&gt;: New final_answer tool with agent duration tracking for improved agent workflows&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.3.3 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Parent-Child Chunking&lt;/strong&gt;: Hierarchical parent-child chunking strategy for enhanced context management and more accurate retrieval&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Knowledge Base Pinning&lt;/strong&gt;: Pin frequently-used knowledge bases for quick access&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Fallback Response&lt;/strong&gt;: Fallback response handling with UI indicators when no relevant results are found&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Passage Cleaning for Rerank&lt;/strong&gt;: Passage cleaning for rerank model to improve relevance scoring accuracy&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Storage Auto-Creation&lt;/strong&gt;: Storage engine connectivity check with auto-creation of buckets&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Milvus Vector DB&lt;/strong&gt;: Added Milvus as a new vector database backend for knowledge retrieval&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.3.2 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;🔍 &lt;strong&gt;Knowledge Search&lt;/strong&gt;: New &quot;Knowledge Search&quot; entry point with semantic retrieval, supporting bringing search results directly into the conversation window&lt;/li&gt; 
  &lt;li&gt;⚙️ &lt;strong&gt;Parser &amp;amp; Storage Engine Configuration&lt;/strong&gt;: Configure document parser engines and storage engines for different sources in settings, with per-file-type parser selection in knowledge base&lt;/li&gt; 
  &lt;li&gt;🖼️ &lt;strong&gt;Image Rendering in Local Storage&lt;/strong&gt;: Support image rendering during conversations in local storage mode, with optimized streaming image placeholders&lt;/li&gt; 
  &lt;li&gt;📄 &lt;strong&gt;Document Preview&lt;/strong&gt;: Embedded document preview component for previewing user-uploaded original files&lt;/li&gt; 
  &lt;li&gt;🎨 &lt;strong&gt;UI Optimization&lt;/strong&gt;: Knowledge base, agent, and shared space list page interaction redesign&lt;/li&gt; 
  &lt;li&gt;🗄️ &lt;strong&gt;Milvus Support&lt;/strong&gt;: Added Milvus as a new vector database backend for knowledge retrieval&lt;/li&gt; 
  &lt;li&gt;🌋 &lt;strong&gt;Volcengine TOS&lt;/strong&gt;: Added Volcengine TOS object storage support&lt;/li&gt; 
  &lt;li&gt;📊 &lt;strong&gt;Mermaid Rendering&lt;/strong&gt;: Support mermaid diagram rendering in chat with fullscreen viewer, zoom, pan, toolbar and export&lt;/li&gt; 
  &lt;li&gt;💬 &lt;strong&gt;Batch Conversation Management&lt;/strong&gt;: Batch management and delete all sessions functionality&lt;/li&gt; 
  &lt;li&gt;🔗 &lt;strong&gt;Remote URL Knowledge&lt;/strong&gt;: Support creating knowledge entries from remote file URLs&lt;/li&gt; 
  &lt;li&gt;🧠 &lt;strong&gt;Memory Graph Preview&lt;/strong&gt;: Preview of user-level memory graph visualization&lt;/li&gt; 
  &lt;li&gt;🔄 &lt;strong&gt;Async Re-parse&lt;/strong&gt;: Async API for re-processing existing knowledge documents&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.3.0 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;🏢 &lt;strong&gt;Shared Space&lt;/strong&gt;: Shared space with member invitations, shared knowledge bases and agents across members, tenant-isolated retrieval&lt;/li&gt; 
  &lt;li&gt;🧩 &lt;strong&gt;Agent Skills&lt;/strong&gt;: Agent skills system with preloaded skills for smart-reasoning agent, sandboxed execution environment for security isolation&lt;/li&gt; 
  &lt;li&gt;🤖 &lt;strong&gt;Custom Agents&lt;/strong&gt;: Support for creating, configuring, and selecting custom agents with knowledge base selection modes (all/specified/disabled)&lt;/li&gt; 
  &lt;li&gt;📊 &lt;strong&gt;Data Analyst Agent&lt;/strong&gt;: Built-in Data Analyst agent with DataSchema tool for CSV/Excel analysis&lt;/li&gt; 
  &lt;li&gt;🧠 &lt;strong&gt;Thinking Mode&lt;/strong&gt;: Support thinking mode for LLM and agents, intelligent filtering of thinking content&lt;/li&gt; 
  &lt;li&gt;🔍 &lt;strong&gt;Web Search Providers&lt;/strong&gt;: Added Bing and Google search providers alongside DuckDuckGo&lt;/li&gt; 
  &lt;li&gt;📋 &lt;strong&gt;Enhanced FAQ&lt;/strong&gt;: Batch import dry run, similar questions, matched question in search results, large imports offloaded to object storage&lt;/li&gt; 
  &lt;li&gt;🔑 &lt;strong&gt;API Key Auth&lt;/strong&gt;: API Key authentication mechanism with Swagger documentation security&lt;/li&gt; 
  &lt;li&gt;📎 &lt;strong&gt;In-Input Selection&lt;/strong&gt;: Select knowledge bases and files directly in the input box with @mention display&lt;/li&gt; 
  &lt;li&gt;☸️ &lt;strong&gt;Helm Chart&lt;/strong&gt;: Complete Helm chart for Kubernetes deployment with Neo4j GraphRAG support&lt;/li&gt; 
  &lt;li&gt;🌍 &lt;strong&gt;i18n&lt;/strong&gt;: Added Korean (한국어) language support&lt;/li&gt; 
  &lt;li&gt;🔒 &lt;strong&gt;Security Hardening&lt;/strong&gt;: SSRF-safe HTTP client, enhanced SQL validation, MCP stdio transport security, sandbox-based execution&lt;/li&gt; 
  &lt;li&gt;⚡ &lt;strong&gt;Infrastructure&lt;/strong&gt;: Qdrant vector DB support, Redis ACL, configurable log level, Ollama embedding optimization, &lt;code&gt;DISABLE_REGISTRATION&lt;/code&gt; control&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;v0.2.0 Highlights:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;🤖 &lt;strong&gt;Agent Mode&lt;/strong&gt;: New ReACT Agent mode that can call built-in tools, MCP tools, and web search, providing comprehensive summary reports through multiple iterations and reflection&lt;/li&gt; 
  &lt;li&gt;📚 &lt;strong&gt;Multi-Type Knowledge Bases&lt;/strong&gt;: Support for FAQ and document knowledge base types, with new features including folder import, URL import, tag management, and online entry&lt;/li&gt; 
  &lt;li&gt;⚙️ &lt;strong&gt;Conversation Strategy&lt;/strong&gt;: Support for configuring Agent models, normal mode models, retrieval thresholds, and Prompts, with precise control over multi-turn conversation behavior&lt;/li&gt; 
  &lt;li&gt;🌐 &lt;strong&gt;Web Search&lt;/strong&gt;: Support for extensible web search engines with built-in DuckDuckGo search engine&lt;/li&gt; 
  &lt;li&gt;🔌 &lt;strong&gt;MCP Tool Integration&lt;/strong&gt;: Support for extending Agent capabilities through MCP, with built-in uvx and npx launchers, supporting multiple transport methods&lt;/li&gt; 
  &lt;li&gt;🎨 &lt;strong&gt;New UI&lt;/strong&gt;: Optimized conversation interface with Agent mode/normal mode switching, tool call process display, and comprehensive knowledge base management interface upgrade&lt;/li&gt; 
  &lt;li&gt;⚡ &lt;strong&gt;Infrastructure Upgrade&lt;/strong&gt;: Introduced MQ async task management, support for automatic database migration, and fast development mode&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;📱 Interface Showcase&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;&lt;b&gt;💬 Intelligent Q&amp;amp;A Conversation&lt;/b&gt;&lt;br /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/qa.png&quot; alt=&quot;Intelligent Q&amp;amp;A Conversation&quot; width=&quot;100%&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; align=&quot;center&quot;&gt;&lt;b&gt;📖 Wiki Browser&lt;/b&gt;&lt;br /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/wiki-browser.png&quot; alt=&quot;Wiki Browser&quot; width=&quot;100%&quot; /&gt;&lt;/td&gt; 
   &lt;td width=&quot;50%&quot; align=&quot;center&quot;&gt;&lt;b&gt;🕸️ Wiki Knowledge Graph&lt;/b&gt;&lt;br /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/wiki-graph.png&quot; alt=&quot;Wiki Knowledge Graph&quot; width=&quot;100%&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; align=&quot;center&quot;&gt;&lt;b&gt;🤖 Agent Mode · Tool Call Process&lt;/b&gt;&lt;br /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/agent-qa.png&quot; alt=&quot;Agent Mode Tool Call Process&quot; width=&quot;100%&quot; /&gt;&lt;/td&gt; 
   &lt;td width=&quot;50%&quot; align=&quot;center&quot;&gt;&lt;b&gt;⚙️ Conversation Settings&lt;/b&gt;&lt;br /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/settings.png&quot; alt=&quot;Conversation Settings&quot; width=&quot;100%&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;&lt;b&gt;🔭 Observability · Langfuse Tracing&lt;/b&gt;&lt;br /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/langfuse.png&quot; alt=&quot;Observability Langfuse Tracing&quot; width=&quot;100%&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;🏗️ Architecture&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/images/architecture.png&quot; alt=&quot;weknora-architecture.png&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Fully modular pipeline from document parsing, vectorization, and retrieval to LLM inference — every component is swappable and extensible. Supports local / private cloud deployment with full data sovereignty and a zero-barrier Web UI for quick onboarding.&lt;/p&gt; 
&lt;h2&gt;🧩 Feature Overview&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Intelligent Conversation&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Capability&lt;/th&gt; 
   &lt;th&gt;Details&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Intelligent Reasoning&lt;/td&gt; 
   &lt;td&gt;ReACT progressive multi-step reasoning, autonomously orchestrating knowledge retrieval, MCP tools, and web search; custom agent support&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Quick Q&amp;amp;A&lt;/td&gt; 
   &lt;td&gt;RAG-based Q&amp;amp;A over knowledge bases for fast and accurate answers&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Wiki Mode&lt;/td&gt; 
   &lt;td&gt;Agent-driven auto-generation of structured, interlinked markdown Wiki pages from raw documents&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Tool Calling&lt;/td&gt; 
   &lt;td&gt;Built-in tools, MCP tools, web search&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Conversation Strategy&lt;/td&gt; 
   &lt;td&gt;Online Prompt editing, retrieval threshold tuning, multi-turn context awareness&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Suggested Questions&lt;/td&gt; 
   &lt;td&gt;Auto-generated question suggestions based on knowledge base content&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Knowledge Management&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Capability&lt;/th&gt; 
   &lt;th&gt;Details&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Knowledge Base Types&lt;/td&gt; 
   &lt;td&gt;FAQ / Document / Wiki with folder import, URL import, tag management, and online entry&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Data Source Import&lt;/td&gt; 
   &lt;td&gt;Auto-sync from Feishu / Notion / Yuque (more data sources coming soon); incremental and full sync&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Document Formats&lt;/td&gt; 
   &lt;td&gt;PDF / Word / Txt / Markdown / HTML / Images / CSV / Excel / PPT / JSON&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Retrieval Strategies&lt;/td&gt; 
   &lt;td&gt;BM25 sparse / Dense retrieval / GraphRAG / parent-child chunking / multi-dimensional indexing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;E2E Testing&lt;/td&gt; 
   &lt;td&gt;Full-pipeline visualization with recall hit rate, BLEU / ROUGE metric evaluation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Integrations &amp;amp; Extensions&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Capability&lt;/th&gt; 
   &lt;th&gt;Details&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;LLMs&lt;/td&gt; 
   &lt;td&gt;OpenAI / Azure OpenAI / Anthropic (Claude) / DeepSeek / Qwen (Alibaba Cloud) / Zhipu / Hunyuan / Doubao (Volcengine) / Gemini / MiniMax / NVIDIA / Novita AI / SiliconFlow / OpenRouter / Ollama&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Embeddings&lt;/td&gt; 
   &lt;td&gt;Ollama / BGE / GTE / OpenAI-compatible APIs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Vector DBs&lt;/td&gt; 
   &lt;td&gt;PostgreSQL (pgvector) / Elasticsearch / Milvus / Weaviate / Qdrant / Apache Doris / Tencent VectorDB&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Object Storage&lt;/td&gt; 
   &lt;td&gt;Local / MinIO / AWS S3 / Volcengine TOS / Alibaba Cloud OSS / Kingsoft Cloud KS3&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;IM Channels&lt;/td&gt; 
   &lt;td&gt;WeCom / Feishu / Slack / Telegram / DingTalk / Mattermost / WeChat&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Web Search&lt;/td&gt; 
   &lt;td&gt;DuckDuckGo / Bing / Google / Tavily / Baidu / Ollama / SearXNG&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Capability&lt;/th&gt; 
   &lt;th&gt;Details&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Deployment&lt;/td&gt; 
   &lt;td&gt;Local / Docker / Kubernetes (Helm) with private and offline support&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;UI&lt;/td&gt; 
   &lt;td&gt;Web UI / RESTful API / CLI (&lt;code&gt;weknora&lt;/code&gt;) / Chrome Extension / WeChat Mini Program&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Observability&lt;/td&gt; 
   &lt;td&gt;Integrated Langfuse for ReAct loops, token tracking, tool calls, and pipeline tracing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Task Management&lt;/td&gt; 
   &lt;td&gt;MQ async tasks, automatic database migration on version upgrade&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Model Management&lt;/td&gt; 
   &lt;td&gt;Centralized config, per-knowledge-base model selection, multi-tenant built-in model sharing, WeKnora Cloud hosted models and parsing&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;🧩 Chrome Extension&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://chromewebstore.google.com/detail/jpemjbopikggjlmikmclgbmkhhopjdgd&quot;&gt;&lt;strong&gt;WeKnora Chrome Extension&lt;/strong&gt;&lt;/a&gt; lets you capture web content directly into your WeKnora knowledge base. Select text, images, or entire pages in the browser and save them as knowledge entries with one click — no copy-paste or file upload needed.&lt;/p&gt; 
&lt;h2&gt;📱 WeChat Mini Program&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/miniprogram/README.md&quot;&gt;WeKnora Mini Program&lt;/a&gt; provides a lightweight mobile client for configuring WeKnora API access, selecting knowledge bases, importing URLs, and asking knowledge chat from WeChat.&lt;/p&gt; 
&lt;h2&gt;🦞 ClawHub Skill&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://clawhub.ai/lyingbug/weknora&quot;&gt;&lt;strong&gt;WeKnora ClawHub Skill&lt;/strong&gt;&lt;/a&gt; is a WeKnora skill published on the ClawHub platform. Once installed, it enables document import (file / URL / Markdown), hybrid search (vector + keyword) across knowledge bases, and knowledge entry management — all through the WeKnora REST API.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Document Import&lt;/strong&gt; — Upload files, import web pages, or write Markdown knowledge via the agent&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Hybrid Search&lt;/strong&gt; — Search within or across knowledge bases with vector + keyword retrieval&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Knowledge Management&lt;/strong&gt; — List, browse, edit, and delete knowledge entries programmatically&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;⌨️ Command-Line Interface&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;weknora&lt;/code&gt; is the official CLI for driving the API from a terminal or AI agent. The command surface mirrors &lt;code&gt;gh&lt;/code&gt; CLI&#39;s &lt;code&gt;&amp;lt;noun&amp;gt; &amp;lt;verb&amp;gt;&lt;/code&gt; convention; output is human-readable by default and switches to a stable JSON envelope with &lt;code&gt;--json&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;weknora auth login --host https://kb.example.com
weknora kb list
weknora link --kb my-knowledge-base    # bind the current directory
weknora doc upload notes.md
weknora chat &quot;summarise the design doc&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/cli/README.md&quot;&gt;&lt;code&gt;cli/README.md&lt;/code&gt;&lt;/a&gt; for install + 5-minute quickstart and &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/cli/AGENTS.md&quot;&gt;&lt;code&gt;cli/AGENTS.md&lt;/code&gt;&lt;/a&gt; for the operational contract that AI agents (Claude Code, Cursor, Aider, …) can rely on.&lt;/p&gt; 
&lt;h2&gt;🚀 Getting Started&lt;/h2&gt; 
&lt;h3&gt;🛠 Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://git-scm.com/&quot;&gt;Git&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;📦 Installation &amp;amp; Launch&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/Tencent/WeKnora.git
cd WeKnora
cp .env.example .env   # Edit .env as needed, see comments in the file
docker compose up -d   # Start core services
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Once started, visit &lt;strong&gt;&lt;a href=&quot;http://localhost&quot;&gt;http://localhost&lt;/a&gt;&lt;/strong&gt; to get started.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;To use a local Ollama model, run &lt;code&gt;ollama serve &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;/code&gt; first.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;🔧 Optional Services (Docker Compose Profiles)&lt;/h3&gt; 
&lt;p&gt;Add &lt;code&gt;--profile&lt;/code&gt; flags to enable additional components. Multiple profiles can be combined:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Profile&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;em&gt;(default)&lt;/em&gt;&lt;/td&gt; 
   &lt;td&gt;Core services&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;docker compose up -d&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;full&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;All features&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;docker compose --profile full up -d&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;neo4j&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Knowledge Graph (Neo4j)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;docker compose --profile neo4j up -d&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;minio&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Object Storage (MinIO)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;docker compose --profile minio up -d&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;langfuse&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Tracing (Langfuse)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;docker compose --profile langfuse up -d&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Combine profiles: &lt;code&gt;docker compose --profile neo4j --profile minio up -d&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Stop services: &lt;code&gt;docker compose down&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;🌐 Service URLs&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Service&lt;/th&gt; 
   &lt;th&gt;URL&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Web UI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;http://localhost&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Backend API&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;http://localhost:8080&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Langfuse Tracing&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;MCP Server&lt;/h2&gt; 
&lt;p&gt;Please refer to the &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/mcp-server/MCP_CONFIG.md&quot;&gt;MCP Configuration Guide&lt;/a&gt; for the necessary setup.&lt;/p&gt; 
&lt;h2&gt;🔌 Using WeChat Dialog Open Platform&lt;/h2&gt; 
&lt;p&gt;WeKnora serves as the core technology framework for the &lt;a href=&quot;https://chatbot.weixin.qq.com&quot;&gt;WeChat Dialog Open Platform&lt;/a&gt;, providing a more convenient usage approach:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Zero-code Deployment&lt;/strong&gt;: Simply upload knowledge to quickly deploy intelligent Q&amp;amp;A services within the WeChat ecosystem, achieving an &quot;ask and answer&quot; experience&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Efficient Question Management&lt;/strong&gt;: Support for categorized management of high-frequency questions, with rich data tools to ensure accurate, reliable, and easily maintainable answers&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;WeChat Ecosystem Integration&lt;/strong&gt;: Through the WeChat Dialog Open Platform, WeKnora&#39;s intelligent Q&amp;amp;A capabilities can be seamlessly integrated into WeChat Official Accounts, Mini Programs, and other WeChat scenarios, enhancing user interaction experiences&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📘 API Reference&lt;/h2&gt; 
&lt;p&gt;Troubleshooting FAQ: &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/QA.md&quot;&gt;Troubleshooting FAQ&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Detailed API documentation is available at: &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/api/README.md&quot;&gt;API Docs&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Product plans and upcoming features: &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/ROADMAP.md&quot;&gt;Roadmap&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;🧭 Developer Guide&lt;/h2&gt; 
&lt;h3&gt;⚡ Fast Development Mode (Recommended)&lt;/h3&gt; 
&lt;p&gt;If you need to frequently modify code, &lt;strong&gt;you don&#39;t need to rebuild Docker images every time&lt;/strong&gt;! Use fast development mode:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Start infrastructure
make dev-start

# Start backend (new terminal)
make dev-app

# Start frontend (new terminal)
make dev-frontend
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Development Advantages:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;✅ Frontend modifications auto hot-reload (no restart needed)&lt;/li&gt; 
 &lt;li&gt;✅ Backend modifications quick restart (5-10 seconds, supports Air hot-reload)&lt;/li&gt; 
 &lt;li&gt;✅ No need to rebuild Docker images&lt;/li&gt; 
 &lt;li&gt;✅ Support IDE breakpoint debugging&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Detailed Documentation:&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/docs/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md&quot;&gt;Development Environment Quick Start&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;📁 Directory Structure&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;WeKnora/
├── client/      # go client
├── cmd/         # Main entry point
├── config/      # Configuration files
├── docker/      # docker images files
├── docreader/   # Document parsing app
├── docs/        # Project documentation
├── frontend/    # Frontend app
├── internal/    # Core business logic
├── mcp-server/  # MCP server
├── migrations/  # DB migration scripts
└── scripts/     # Shell scripts
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;🤝 Contributing&lt;/h2&gt; 
&lt;p&gt;Welcome to submit &lt;a href=&quot;https://github.com/Tencent/WeKnora/issues&quot;&gt;Issues&lt;/a&gt; or Pull Requests.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Process:&lt;/strong&gt; Fork → Create branch → Commit changes → Open PR&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Standards:&lt;/strong&gt; Format code with &lt;code&gt;gofmt&lt;/code&gt;, follow &lt;a href=&quot;https://www.conventionalcommits.org/&quot;&gt;Conventional Commits&lt;/a&gt; (&lt;code&gt;feat:&lt;/code&gt; / &lt;code&gt;fix:&lt;/code&gt; / &lt;code&gt;docs:&lt;/code&gt; / &lt;code&gt;test:&lt;/code&gt; / &lt;code&gt;refactor:&lt;/code&gt;)&lt;/p&gt; 
&lt;h2&gt;🔒 Security Notice&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Starting from v0.1.3, WeKnora includes login authentication functionality to enhance system security. For production deployments, we strongly recommend:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Deploy WeKnora services in internal/private network environments rather than public internet&lt;/li&gt; 
 &lt;li&gt;Avoid exposing the service directly to public networks to prevent potential information leakage&lt;/li&gt; 
 &lt;li&gt;Configure proper firewall rules and access controls for your deployment environment&lt;/li&gt; 
 &lt;li&gt;Regularly update to the latest version for security patches and improvements&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;👥 Contributors&lt;/h2&gt; 
&lt;p&gt;Thanks to these excellent contributors:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Tencent/WeKnora/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contrib.rocks/image?repo=Tencent/WeKnora&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the &lt;a href=&quot;https://raw.githubusercontent.com/Tencent/WeKnora/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;. You are free to use, modify, and distribute the code with proper attribution.&lt;/p&gt; 
&lt;h2&gt;📈 Project Statistics&lt;/h2&gt; 
&lt;a href=&quot;https://www.star-history.com/#Tencent/WeKnora&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/svg?repos=Tencent/WeKnora&amp;amp;type=date&amp;amp;theme=dark&amp;amp;legend=top-left&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/svg?repos=Tencent/WeKnora&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=Tencent/WeKnora&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/90ec1aecaac9d017c572f4e72757aa43f794571e3e12ebc70534a4b999166a12/Tencent/WeKnora" medium="image" />
      
    </item>
    
    <item>
      <title>MHSanaei/3x-ui</title>
      <link>https://github.com/MHSanaei/3x-ui</link>
      <description>&lt;p&gt;Xray panel supporting multi-protocol multi-user expire day &amp; traffic &amp; IP limit (Vmess, Vless, Trojan, ShadowSocks, Wireguard, Hysteria, Tunnel, Mixed, HTTP, Tun)&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/README.md&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/README.fa_IR.md&quot;&gt;فارسی&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/README.ar_EG.md&quot;&gt;العربية&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/README.zh_CN.md&quot;&gt;中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/README.es_ES.md&quot;&gt;Español&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/README.ru_RU.md&quot;&gt;Русский&lt;/a&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;./media/3x-ui-dark.png&quot; /&gt; 
  &lt;img alt=&quot;3x-ui&quot; src=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/media/3x-ui-light.png&quot; /&gt; 
 &lt;/picture&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/MHSanaei/3x-ui/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg?sanitize=true&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/MHSanaei/3x-ui/actions&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg?sanitize=true&quot; alt=&quot;Build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/#&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg?sanitize=true&quot; alt=&quot;GO Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/MHSanaei/3x-ui/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg?sanitize=true&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.en.html&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg?sanitize=true&quot; alt=&quot;Go Reference&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3X-UI&lt;/strong&gt; — advanced, open-source web-based control panel designed for managing Xray-core server. It offers a user-friendly interface for configuring and monitoring various VPN and proxy protocols.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report 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 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;This project is only for personal usage, please do not use it for illegal purposes, and please do not use it in a production environment.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;As an enhanced fork of the original X-UI project, 3X-UI provides improved stability, broader protocol support, and additional features.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash &amp;lt;(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For full documentation, please visit the &lt;a href=&quot;https://github.com/MHSanaei/3x-ui/wiki&quot;&gt;project Wiki&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;A Special Thanks to&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alireza0/&quot;&gt;alireza0&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Acknowledgment&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/chocolate4u/Iran-v2ray-rules&quot;&gt;Iran v2ray rules&lt;/a&gt; (License: &lt;strong&gt;GPL-3.0&lt;/strong&gt;): &lt;em&gt;Enhanced v2ray/xray and v2ray/xray-clients routing rules with built-in Iranian domains and a focus on security and adblocking.&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/runetfreedom/russia-v2ray-rules-dat&quot;&gt;Russia v2ray rules&lt;/a&gt; (License: &lt;strong&gt;GPL-3.0&lt;/strong&gt;): &lt;em&gt;This repository contains automatically updated V2Ray routing rules based on data on blocked domains and addresses in Russia.&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Community Tools&lt;/h2&gt; 
&lt;p&gt;Tools and integrations built by the community around 3x-ui.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/batonogov/terraform-provider-threexui&quot;&gt;terraform-provider-3x-ui&lt;/a&gt; (License: &lt;strong&gt;MIT&lt;/strong&gt;): &lt;em&gt;Manage inbounds, clients, panel settings, and Xray configuration as code with Terraform / OpenTofu.&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Support project&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;If this project is helpful to you, you may wish to give it a&lt;/strong&gt;🌟&lt;/p&gt; 
&lt;a href=&quot;https://www.buymeacoffee.com/MHSanaei&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/media/default-yellow.png&quot; alt=&quot;Buy Me A Coffee&quot; style=&quot;height: 70px !important;width: 277px !important;&quot; /&gt; &lt;/a&gt; 
&lt;br /&gt; 
&lt;a href=&quot;https://nowpayments.io/donation/hsanaei&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MHSanaei/3x-ui/main/media/donation-button-black.svg?sanitize=true&quot; alt=&quot;Crypto donation button by NOWPayments&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;Stargazers over Time&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://starchart.cc/MHSanaei/3x-ui&quot;&gt;&lt;img src=&quot;https://starchart.cc/MHSanaei/3x-ui.svg?variant=adaptive&quot; alt=&quot;Stargazers over time&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/ab9a74a8dba96bb751bb6e0b5309bff4e6e3527d57c4513dc1f8539335a41ec0/MHSanaei/3x-ui" medium="image" />
      
    </item>
    
    <item>
      <title>masterking32/MasterDnsVPN</title>
      <link>https://github.com/masterking32/MasterDnsVPN</link>
      <description>&lt;p&gt;Advanced DNS tunneling VPN for censorship bypass, optimized beyond DNSTT and SlipStream with low-overhead ARQ, resolver load balancing, high packet-loss stability and speed.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;# MasterDnsVPN Project 🔐&lt;/p&gt; 
&lt;h2&gt;| &lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/raw/main/README_FA.MD&quot;&gt;نسخه فارسی&lt;/a&gt; | &lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/raw/main/README.MD&quot;&gt;English Version&lt;/a&gt; |&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;MasterDnsVPN&lt;/strong&gt; is a scientific and research-oriented project for carrying TCP traffic through DNS queries and responses. In broad goal, it is similar to projects such as DNSTT or SlipStream, but it follows a fundamentally different structure and implementation approach. This system is designed around compatibility with many resolver behaviors and harsh network conditions, with the goal of preserving the highest possible stability and data delivery even in the worst cases.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://deepwiki.com/masterking32/MasterDnsVPN&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://oosmetrics.com/repo/masterking32/MasterDnsVPN&quot;&gt;&lt;img src=&quot;https://api.oosmetrics.com/api/v1/badge/achievement/5c7b2ce0-0af6-4648-8ded-fd1e847096cd.svg?sanitize=true&quot; alt=&quot;oosmetrics&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/23688&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/23688&quot; alt=&quot;masterking32%2FMasterDnsVPN | 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;h3&gt;📊 MasterDnsVPN Compared with Similar Projects&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Feature&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;SlipStream&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;DNSTT&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;MasterDnsVPN&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Protocol type&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Advanced DNS tunnel&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Classic DNS tunnel&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Advanced DNS tunnel / VPN&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Transport protocol&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;QUIC&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;KCP + Noise&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Custom protocol + ARQ&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Transport header overhead&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟠 ~24B&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🔴 ~59B&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 ~5–7B&lt;br /&gt;≈88% lower than DNSTT&lt;br /&gt;≈71% lower than SlipStream&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Encryption style&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TLS 1.3 (inside QUIC)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Noise (Curve25519)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;AES / ChaCha20 / XOR (if XOR is used: lightweight with lower security and no extra overhead)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Architecture&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Unified (QUIC handles everything)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Multi-layered (KCP + SMUX + Noise)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 Lightweight custom design optimized for DNS&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Speed&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟡 High (up to ~5× faster than DNSTT)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🔴 Medium&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 Faster than others&lt;br /&gt;Up to ~9× faster than DNSTT&lt;br /&gt;Up to ~3.6× faster than SlipStream&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Stability under packet loss&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟡 Good&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟠 Medium&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 Very high (Multipath + ARQ)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Multi-resolver support&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes (multipath)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes — advanced (multi-resolver + duplication)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Resilience under heavy censorship&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Good&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Medium&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Very strong (a core project goal)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Setup complexity&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Medium&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Simple&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Easier installation&lt;br /&gt;More complex only if you heavily customize advanced settings&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SOCKS5 support&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Optimized for SOCKS5 / SOCKS4 with reduced SOCKS overhead&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Shadowsocks support&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Indirectly: TCP Forwarding mode can carry TCP-based protocols&lt;br /&gt;e.g. Shadowsocks, VLESS/VMess, etc.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Real multipath&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes (QUIC multipath)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes (multi-resolver + duplication)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Adaptive routing&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Limited&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Advanced (latency/loss based)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Design goal&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;High speed and efficiency&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Simplicity and stability&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Surviving the harshest networks — stability, speed, and efficiency&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Implementation language&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Rust&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Go&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Main version is Go&lt;br /&gt;Legacy Python version also exists&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Built-in balancer&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🔴&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 (8 built-in balancing modes)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Duplication system&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes — increases traffic to improve reliability (configurable or can be disabled)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;MTU tolerance&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Better than DNSTT&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;-&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Works even with very small MTU because protocol overhead is very low&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Failover system&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Download speed 10MB (Local)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟡 0.978s&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🔴 2.492s&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 0.270s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Upload speed 10MB (Local)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟡 3.249s&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🔴 16.207s&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 1.746s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Resolver health checks and auto-disable&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Background reactivation of healthy resolvers&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Local DNS service on client (to reduce DNS hijacking)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅ (with strong DNS caching)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;DNS resolving through SOCKS5&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅ (with DNS caching)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Fine-grained professional configuration&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟠&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟠&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 Almost every subsystem is configurable&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;No external helper software required&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;🟢 No extra software is required; if needed, you can still combine it with SOCKS or tools such as Shadowsocks or OpenVPN&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h3&gt;❌ Disclaimer&lt;/h3&gt; 
&lt;p&gt;MasterDnsVPN is provided as an educational and research project only.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Provided without warranty:&lt;/strong&gt; This software is provided “AS-IS”, without any express or implied warranty, including merchantability, fitness for a particular purpose, or non-infringement.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Limitation of liability:&lt;/strong&gt; The developers and contributors of this project accept no responsibility for any direct, indirect, incidental, consequential, or other damages arising from the use of this software or the inability to use it.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;User responsibility:&lt;/strong&gt; Using this project outside test environments may disrupt or damage network behavior. The user alone is responsible for all consequences of installation, configuration, and use.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Legal compliance:&lt;/strong&gt; Using this project to bypass local laws may result in civil or criminal consequences. Please review the laws and regulations of your country before use. The developers accept no responsibility for violations of local, national, or international laws by users.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;License terms:&lt;/strong&gt; Use, copying, distribution, or modification of this software is governed by the license in the &lt;code&gt;LICENSE&lt;/code&gt; file of this repository. Any use outside those terms is prohibited.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Announcement and Support Channel 📢&lt;/h2&gt; 
&lt;p&gt;For the latest news, releases, and project updates, follow our Telegram channel: &lt;a href=&quot;https://t.me/masterdnsvpn&quot;&gt;Telegram Channel&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;If you like this project, please support it by starring it on GitHub (⭐). It helps the project get discovered.&lt;/h3&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Optional Financial Support 💸&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;TON network:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;code&gt;masterking32.ton&lt;/code&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;EVM-compatible networks (ETH and compatible chains):&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;code&gt;0x517f07305D6ED781A089322B6cD93d1461bF8652&lt;/code&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;TRC20 network (TRON):&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;code&gt;TLApdY8APWkFHHoxebxGY8JhMeChiETqFH&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Every contribution and every piece of feedback is appreciated. Support directly helps ongoing development and improvement.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Key Features and Advantages ✨&lt;/h2&gt; 
&lt;p&gt;A brief overview of the main capabilities of MasterDnsVPN:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Censorship resistance and harsh-network survivability:&lt;/strong&gt; 🛡️ Designed to work on filtered networks, unstable links, and strict MTU environments.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lightweight custom protocol:&lt;/strong&gt; 🔄 Uses a custom protocol with retransmission logic to reduce overhead and increase usable DNS payload.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multipath and packet duplication:&lt;/strong&gt; 📡 Sends traffic through multiple paths and supports selective duplication to increase delivery probability on unstable networks.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart resolver selection and health checks:&lt;/strong&gt; ⚡ Selects resolvers based on quality and health, and manages problematic resolvers automatically.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;MTU discovery and synchronization:&lt;/strong&gt; 🧰 Detects the practical MTU of working paths and aligns around it to reduce fragmentation and improve stability.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SOCKS5 / SOCKS4 support and optimization:&lt;/strong&gt; 🧦 Optimized local proxy handling for common applications.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Packed control blocks and lower control overhead:&lt;/strong&gt; 📦 Groups ACK/control traffic together to reduce control chatter.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Optional compression and request packing:&lt;/strong&gt; 🗜️ Reduces request counts and improves efficiency under small-MTU conditions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Flexible encryption:&lt;/strong&gt; 🔐 Supports multiple encryption methods to balance speed and security.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Optional client-side local DNS and caching:&lt;/strong&gt; 📛 Can expose a local DNS service, reduce latency, and limit hijacking opportunities.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scalable resource control:&lt;/strong&gt; ⚙️ Can run on small servers or be tuned for heavier loads.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This list is only a high-level summary. The related sections below explain each area in more detail.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌐 Battle-Tested During a Total Internet Blackout&lt;/h2&gt; 
&lt;p&gt;MasterDnsVPN isn&#39;t just a theoretical project. It is battle-tested and proven to work in environments where the global internet is completely severed.&lt;/p&gt; 
&lt;p&gt;Recently, during a 70+ day internet blackout in Iran, authorities didn&#39;t just block VPNs or filter websites—they completely pulled the plug on international bandwidth. With 99% of the connection to the outside world physically cut off, users were trapped inside a closed, local intranet.&lt;/p&gt; 
&lt;p&gt;Standard circumvention tools are useless when there is no international internet to connect to. Yet, during this massive shutdown, MasterDnsVPN stood out as one of the very few lifelines that actually kept users connected to the global web.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;How did it survive a total shutdown?&lt;/strong&gt; Instead of acting like a standard VPN, MasterDnsVPN relies on smart DNS tunneling techniques to pierce through the blackout:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Multiple Resolvers:&lt;/strong&gt; It routes traffic through various DNS resolvers, ensuring the connection never relies on a single, easily blockable path.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Encryption &amp;amp; Data Splitting:&lt;/strong&gt; It encrypts your data and breaks it down into tiny, scattered pieces.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Disguised as Legitimate Traffic:&lt;/strong&gt; It wraps these data pieces inside standard, perfectly normal DNS queries.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bypassing Local Traps:&lt;/strong&gt; Because the traffic looks exactly like basic, everyday DNS requests, firewalls allow it through. The data gets resolved and reaches the outside world—even if the network forces you to use their own restricted, government-controlled local resolvers.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This exact combination is what allowed MasterDnsVPN to maintain a stable connection when the outside world was completely blocked.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Setup and Getting Started 🧑‍💻&lt;/h1&gt; 
&lt;h2&gt;Section 1: 🖥️ Server Setup&lt;/h2&gt; 
&lt;h3&gt;Section 1.1: 🌐 Domain Setup and Preparation (Prerequisite)&lt;/h3&gt; 
&lt;p&gt;To receive DNS requests directly on your server, you must delegate a subdomain to it. In short, create two records: one &lt;code&gt;A&lt;/code&gt; record that points to your server IP, and one &lt;code&gt;NS&lt;/code&gt; record that delegates the tunnel subdomain to that A record.&lt;/p&gt; 
&lt;h4&gt;Step 1.1.1: 🅰️ Create an A Record (Server Address)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Type:&lt;/strong&gt; &lt;code&gt;A&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; a short name such as &lt;code&gt;ns&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Value:&lt;/strong&gt; your server IPv4 address&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Example: &lt;code&gt;ns.example.com -&amp;gt; 1.2.3.4&lt;/code&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Cloudflare note: if the domain uses Cloudflare, open the &lt;code&gt;DNS&lt;/code&gt; page and click the cloud icon next to the &lt;code&gt;A&lt;/code&gt; record so it becomes gray (&lt;code&gt;DNS only&lt;/code&gt;). It must not remain proxied.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Step 1.1.2: 🏷️ Create an NS Record (Delegate the Subdomain)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Type:&lt;/strong&gt; &lt;code&gt;NS&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; the tunnel subdomain, for example &lt;code&gt;v&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Value / Target:&lt;/strong&gt; &lt;code&gt;ns.example.com&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Example: &lt;code&gt;v.example.com -&amp;gt; ns.example.com&lt;/code&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Cloudflare note: add the &lt;code&gt;NS&lt;/code&gt; record normally. Cloudflare does not proxy NS records, but make sure the &lt;code&gt;ns&lt;/code&gt; A record is already set to &lt;code&gt;DNS only&lt;/code&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Section 1.1.3: 💡 A Short Note About MTU&lt;/h4&gt; 
&lt;p&gt;Shorter domain names leave more space for actual data inside each DNS request. For better throughput, keep names short. If you use Cloudflare, still keep the relevant records in &lt;code&gt;DNS only&lt;/code&gt; mode.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 1.2: 🐧 Quick Linux Server Installation&lt;/h3&gt; 
&lt;h4&gt;Step 1.2.1: Automatic Installation (Script)&lt;/h4&gt; 
&lt;p&gt;If you want to deploy the server on Linux, the easiest method is the automatic installer script. Run this command on the server:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash &amp;lt;(curl -Ls https://raw.githubusercontent.com/masterking32/MasterDnsVPN/main/server_linux_install.sh)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The script handles installation and configuration automatically. When it finishes, the server starts and the &lt;strong&gt;encryption key&lt;/strong&gt; is shown in the terminal log and also written to &lt;code&gt;encrypt_key.txt&lt;/code&gt; next to the executable. Keep this key safe.&lt;/p&gt; 
&lt;h4&gt;Step 1.2.2: Important Notes After Installation&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;During installation, you will be asked for a domain. It must be the same delegated subdomain you configured in the &lt;code&gt;NS&lt;/code&gt; record, for example &lt;code&gt;v.example.com&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;After creating DNS records, wait for propagation. This may take from a few minutes to several hours, and in some cases up to 48 hours depending on TTL and the DNS provider.&lt;/li&gt; 
 &lt;li&gt;To verify the DNS setup, you can use tools such as &lt;code&gt;dig&lt;/code&gt; or &lt;code&gt;nslookup&lt;/code&gt;, for example &lt;code&gt;dig v.example.com NS&lt;/code&gt; or &lt;code&gt;nslookup -type=ns v.example.com&lt;/code&gt;. For a direct query to the new nameserver: &lt;code&gt;dig @ns.example.com v.example.com A&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;If the server firewall is enabled, allow UDP port 53. Example for &lt;code&gt;ufw&lt;/code&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo ufw allow 53/udp
sudo ufw reload
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For &lt;code&gt;firewalld&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo firewall-cmd --add-port=53/udp --permanent
sudo firewall-cmd --reload
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;If port &lt;code&gt;53&lt;/code&gt; is already occupied by another service, such as &lt;code&gt;systemd-resolved&lt;/code&gt;, see the troubleshooting section “Fixing Port 53 Already in Use”.&lt;/li&gt; 
 &lt;li&gt;The encryption key (&lt;code&gt;encrypt_key.txt&lt;/code&gt;) is shown after installation. Copy it and store it safely because the client needs it to connect.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 2: 🚀 Installation and Launch (Client and Server)&lt;/h2&gt; 
&lt;p&gt;You can install and run this project in two ways:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Use the prebuilt binaries (recommended for most users)&lt;/li&gt; 
 &lt;li&gt;Run directly from source with &lt;strong&gt;Go&lt;/strong&gt; (recommended for developers)&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 2.1: Use Prebuilt Releases (✅ Recommended)&lt;/h3&gt; 
&lt;p&gt;For convenience, prebuilt client and server binaries are published in the release page. Download the correct archive for your operating system and extract it.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 &lt;strong&gt;Note:&lt;/strong&gt; Release archives usually include the binary plus sample configuration files.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Client Download Links 📥&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Operating System&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Architecture&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Suitable For&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Direct Download&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 🪟&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt; (64-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 10 and 11&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Windows_AMD64.zip&quot;&gt;Download Windows Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 🪟&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;x86&lt;/code&gt; (32-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older 32-bit Windows systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Windows_X86.zip&quot;&gt;Download Windows x86 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 🪟&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows on ARM devices&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Windows_ARM64.zip&quot;&gt;Download Windows ARM64 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;macOS 🍎&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Apple Silicon Macs (M1 / M2 / M3)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_MacOS_ARM64.zip&quot;&gt;Download macOS Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;macOS 🍎&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Intel Macs&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_MacOS_AMD64.zip&quot;&gt;Download macOS Intel Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt; (64-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Modern distributions (Ubuntu 22.04+, Debian 12+)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_AMD64.zip&quot;&gt;Download Linux Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;x86&lt;/code&gt; (32-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older 32-bit Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_X86.zip&quot;&gt;Download Linux x86 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (Legacy) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt; (64-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older distributions (Ubuntu 20.04, Debian 11)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux-Legacy_AMD64.zip&quot;&gt;Download Linux Legacy Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (Legacy) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older ARM64 Linux systems that need broader compatibility&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux-Legacy_ARM64.zip&quot;&gt;Download Linux Legacy ARM64 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;ARM servers, Raspberry Pi, and similar boards&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_ARM64.zip&quot;&gt;Download Linux ARM Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv7&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;32-bit ARM boards and older embedded Linux devices&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_ARMV7.zip&quot;&gt;Download Linux ARMv7 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv6&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older ARM boards and lightweight Linux devices&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_ARMV6.zip&quot;&gt;Download Linux ARMv6 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Very old ARM devices and embedded Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_ARMV5.zip&quot;&gt;Download Linux ARMv5 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;RISCV64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;RISC-V Linux boards and servers&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_RISCV64.zip&quot;&gt;Download Linux RISCV64 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Big-endian MIPS Linux and router platforms&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_MIPS.zip&quot;&gt;Download Linux MIPS Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPSLE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Little-endian MIPS Linux and router platforms&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_MIPSLE.zip&quot;&gt;Download Linux MIPSLE Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPS64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;64-bit big-endian MIPS Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_MIPS64.zip&quot;&gt;Download Linux MIPS64 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPS64LE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;64-bit little-endian MIPS Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Linux_MIPS64LE.zip&quot;&gt;Download Linux MIPS64LE Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Termux / Android 📱&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Modern Android phones running Termux&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Termux_ARM64.zip&quot;&gt;Download Termux ARM64 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Termux / Android 📱&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv7&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older Android phones running 32-bit Termux environments&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Client_Termux_ARMV7.zip&quot;&gt;Download Termux ARMv7 Client ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Server Download Links 📤&lt;/h4&gt; 
&lt;p&gt;&lt;em&gt;(Use these if you do not want the automated Linux installer.)&lt;/em&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Operating System&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Architecture&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Suitable For&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Direct Download&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 🪟&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt; (64-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows Server, Windows 10 and 11&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Windows_AMD64.zip&quot;&gt;Download Windows Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 🪟&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;x86&lt;/code&gt; (32-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older 32-bit Windows systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Windows_X86.zip&quot;&gt;Download Windows x86 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows 🪟&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Windows on ARM devices&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Windows_ARM64.zip&quot;&gt;Download Windows ARM64 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt; (64-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ubuntu 22.04+, Debian 12+ servers&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_AMD64.zip&quot;&gt;Download Linux Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;x86&lt;/code&gt; (32-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older 32-bit Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_X86.zip&quot;&gt;Download Linux x86 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (Legacy) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt; (64-bit)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older servers (Ubuntu 20.04, Debian 11)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux-Legacy_AMD64.zip&quot;&gt;Download Linux Legacy Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (Legacy) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older ARM64 Linux systems that need broader compatibility&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux-Legacy_ARM64.zip&quot;&gt;Download Linux Legacy ARM64 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;ARM servers&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_ARM64.zip&quot;&gt;Download Linux ARM Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv7&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;32-bit ARM servers and embedded Linux devices&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_ARMV7.zip&quot;&gt;Download Linux ARMv7 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv6&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older ARM boards and lightweight Linux devices&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_ARMV6.zip&quot;&gt;Download Linux ARMv6 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (ARM) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Very old ARM devices and embedded Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_ARMV5.zip&quot;&gt;Download Linux ARMv5 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;RISCV64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;RISC-V Linux boards and servers&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_RISCV64.zip&quot;&gt;Download Linux RISCV64 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Big-endian MIPS Linux and router platforms&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_MIPS.zip&quot;&gt;Download Linux MIPS Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPSLE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Little-endian MIPS Linux and router platforms&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_MIPSLE.zip&quot;&gt;Download Linux MIPSLE Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPS64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;64-bit big-endian MIPS Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_MIPS64.zip&quot;&gt;Download Linux MIPS64 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Linux (MIPS) 🐧&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIPS64LE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;64-bit little-endian MIPS Linux systems&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Linux_MIPS64LE.zip&quot;&gt;Download Linux MIPS64LE Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;macOS 🍎&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Apple Silicon Macs&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_MacOS_ARM64.zip&quot;&gt;Download macOS Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;macOS 🍎&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AMD64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Intel Macs&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_MacOS_AMD64.zip&quot;&gt;Download macOS Intel Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Termux / Android 📱&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARM64&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Modern Android / Termux environments&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Termux_ARM64.zip&quot;&gt;Download Termux ARM64 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Termux / Android 📱&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARMv7&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Older Android / 32-bit Termux environments&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/releases/latest/download/MasterDnsVPN_Server_Termux_ARMV7.zip&quot;&gt;Download Termux ARMv7 Server ⬇️&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 2.2: 📦 MasterDnsVPN Docker Image&lt;/h3&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.1: ⚠️ Overview&lt;/h4&gt; 
&lt;p&gt;This Docker image runs the MasterDnsVPN server in a containerized environment and supports multi-architecture builds.&lt;/p&gt; 
&lt;p&gt;It automatically:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Boots a default configuration if none exists&lt;/li&gt; 
 &lt;li&gt;Injects your domain on first startup&lt;/li&gt; 
 &lt;li&gt;Stores persistent data in &lt;code&gt;/data&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.2: 🖥 Supported Architectures&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;linux/amd64&lt;/li&gt; 
 &lt;li&gt;linux/arm/v5&lt;/li&gt; 
 &lt;li&gt;linux/arm/v7&lt;/li&gt; 
 &lt;li&gt;linux/arm64/v8&lt;/li&gt; 
 &lt;li&gt;linux/mips64le&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.3: 🚀 Quick Start&lt;/h4&gt; 
&lt;p&gt;Run the container with Docker:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  --name masterdnsvpn \
  --restart unless-stopped \
  -e DOMAIN=v.example.com \
  -v $(pwd)/data:/data \
  -p 53:53/tcp \
  -p 53:53/udp \
  ghcr.io/masterking32/masterdnsvpn:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.4: 🧪 Example with docker-compose&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  masterdnsvpn:
    image: ghcr.io/masterking32/masterdnsvpn:latest
    restart: unless-stopped
    environment:
      - DOMAIN=v.example.com
    volumes:
      - ./data:/data
    ports:
      - &quot;53:53/tcp&quot;
      - &quot;53:53/udp&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.5: ⚙️ Required Environment Variables&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Variable&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;DOMAIN&lt;/td&gt; 
   &lt;td&gt;Your DNS domain (required on first run)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ If &lt;code&gt;DOMAIN&lt;/code&gt; is not set on first boot, the container will stop with an error.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.6: 📁 Persistent Data&lt;/h4&gt; 
&lt;p&gt;Stored in &lt;code&gt;/data&lt;/code&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;server_config.toml&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;encrypt_key.txt&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can mount it as volume:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;-v ./data:/data
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.7: 🔧 MikroTik / RouterOS Usage&lt;/h4&gt; 
&lt;p&gt;For MikroTik containers:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use latest v7 MikroTik RouterOS&lt;/li&gt; 
 &lt;li&gt;Destination NAT port UDP/TCP 53 to your container&lt;/li&gt; 
 &lt;li&gt;Full MikroTik container setup: &lt;a href=&quot;https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container&quot;&gt;https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/container mounts
add dst=/data list=MasterDnsVPN src=/containers/mounts/MasterDnsVPN

/container envs
add key=DOMAIN list=MasterDnsVPN value=v.example.com

/container add check-certificate=no dns=1.1.1.1 envlists=MasterDnsVPN hostname=MasterDnsVPN interface=MasterDnsVPN layer-dir=&quot;&quot; mountlists=MasterDnsVPN name=MasterDnsVPN remote-image=ghcr.io/masterking32/masterdnsvpn:latest root-dir=/containers/data/MasterDnsVPN start-on-boot=yes
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h4&gt;Section 2.2.8: 📌 Notes&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;DNS port &lt;code&gt;53&lt;/code&gt; is required (UDP/TCP)&lt;/li&gt; 
 &lt;li&gt;Do NOT run another DNS service on the same host&lt;/li&gt; 
 &lt;li&gt;Designed for production use but still lightweight&lt;/li&gt; 
 &lt;li&gt;No systemd or host modifications required&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 2.3: 🪟 Preparing and Running the Client on Windows&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;After downloading the Windows package, extract it.&lt;/li&gt; 
 &lt;li&gt;Open &lt;code&gt;client_config.toml&lt;/code&gt; with a text editor such as Notepad.&lt;/li&gt; 
 &lt;li&gt;Replace the default values with your real domain, encryption key, and resolver list.&lt;/li&gt; 
 &lt;li&gt;Run the client executable.&lt;/li&gt; 
 &lt;li&gt;Configure your browser or app to use the local SOCKS5 proxy at &lt;code&gt;127.0.0.1:18000&lt;/code&gt; unless you changed the defaults.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 2.4: 🐧 Preparing and Running on Linux / macOS&lt;/h3&gt; 
&lt;p&gt;After downloading the package on Linux:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt update
sudo apt install unzip nano
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Extract the archive:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;unzip MasterDnsVPN_Client_Linux_AMD64.zip
ls
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Give execute permission if needed:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod +x MasterDnsVPN_Client_Linux_AMD64
chmod +x MasterDnsVPN_Server_Linux_AMD64
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Edit the configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nano client_config.toml
nano server_config.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./MasterDnsVPN_Client_Linux_AMD64
./MasterDnsVPN_Server_Linux_AMD64
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 2.5: 🧑‍💻 Run Directly from Source (Go)&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ This section is intended for developers or users who want to run the current Go source directly.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Prerequisite&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Go &lt;code&gt;1.24&lt;/code&gt; or newer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Build from source&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/masterking32/MasterDnsVPN.git
cd MasterDnsVPN

go build -o masterdnsvpn-client ./cmd/client
go build -o masterdnsvpn-server ./cmd/server
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On Windows:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;git clone https://github.com/masterking32/MasterDnsVPN.git
cd MasterDnsVPN

go build -o masterdnsvpn-client.exe .\cmd\client
go build -o masterdnsvpn-server.exe .\cmd\server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Create config files&lt;/h4&gt; 
&lt;p&gt;On Linux and macOS:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp client_config.toml.simple client_config.toml
cp server_config.toml.simple server_config.toml
cp client_resolvers.simple client_resolvers.txt
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On Windows:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Copy-Item client_config.toml.simple client_config.toml
Copy-Item server_config.toml.simple server_config.toml
Copy-Item client_resolvers.simple client_resolvers.txt
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Run the server and client&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./masterdnsvpn-server -config server_config.toml
./masterdnsvpn-client -config client_config.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On Windows:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;.\masterdnsvpn-server.exe -config server_config.toml
.\masterdnsvpn-client.exe -config client_config.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Command-line parameters&lt;/h4&gt; 
&lt;p&gt;Both binaries support these arguments:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Description&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;-config&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Path to the configuration file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;-log&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Optional path to a log file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;-version&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Print version and exit&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./masterdnsvpn-server -config server_config.toml -log server.log
./masterdnsvpn-client -config client_config.toml -log client.log
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Section 3: Configuration Files and Structure 🛠️&lt;/h1&gt; 
&lt;h2&gt;Section 3.1: Important Project Files 📂&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;File&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Purpose&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;client_config.toml&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Main client configuration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;server_config.toml&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Main server configuration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;client_resolvers.txt&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Resolver list&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;encrypt_key.txt&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Shared server-side encryption key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;client_config.toml.simple&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Full sample client config for the current Go version&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;server_config.toml.simple&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Full sample server config for the current Go version&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Accepted formats in &lt;code&gt;client_resolvers.txt&lt;/code&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;IP&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;IP:PORT&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;CIDR&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;CIDR:PORT&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;8.8.8.8
1.1.1.1:53
9.9.9.0/24
208.67.222.0/24:5353
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 3.2: Quick Client Checklist 🚀&lt;/h2&gt; 
&lt;p&gt;These items are required on the client:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;ENCRYPTION_KEY&lt;/code&gt;&lt;/strong&gt; must match the content of the server’s &lt;code&gt;encrypt_key.txt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;DOMAINS&lt;/code&gt;&lt;/strong&gt; must match the server domain&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;client_resolvers.txt&lt;/code&gt;&lt;/strong&gt; must contain working resolvers&lt;/li&gt; 
 &lt;li&gt;For normal use, keep &lt;strong&gt;&lt;code&gt;PROTOCOL_TYPE = &quot;SOCKS5&quot;&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 3.3: Quick Server Checklist ⚙️&lt;/h2&gt; 
&lt;p&gt;These settings are critical on the server:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Set &lt;strong&gt;&lt;code&gt;DOMAIN&lt;/code&gt;&lt;/strong&gt; to your delegated tunnel domain&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;DATA_ENCRYPTION_METHOD&lt;/code&gt;&lt;/strong&gt; must match the client&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;ENCRYPTION_KEY_FILE&lt;/code&gt;&lt;/strong&gt; defines the path to the server key file&lt;/li&gt; 
 &lt;li&gt;If you want direct outbound connections, keep &lt;strong&gt;&lt;code&gt;USE_EXTERNAL_SOCKS5 = false&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;If you want to chain through an upstream SOCKS5 proxy, set &lt;code&gt;USE_EXTERNAL_SOCKS5 = true&lt;/code&gt; and fill &lt;code&gt;FORWARD_IP&lt;/code&gt; / &lt;code&gt;FORWARD_PORT&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 3.4: 📘 Client Configuration Variables (&lt;code&gt;client_config.toml&lt;/code&gt;)&lt;/h2&gt; 
&lt;h3&gt;3.4.1) 🧭 Tunnel Identity and Security&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;PROTOCOL_TYPE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;SOCKS5&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;SOCKS5&quot;&lt;/code&gt; or &lt;code&gt;&quot;TCP&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chooses the local service mode exposed by the client.&lt;br /&gt;&lt;code&gt;SOCKS5&lt;/code&gt; is the default and recommended mode for normal use.&lt;br /&gt;&lt;code&gt;TCP&lt;/code&gt; is useful when you want to forward traffic to one fixed remote target instead of giving applications a SOCKS proxy.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DOMAINS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;[&quot;v.example.com&quot;]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Non-empty list of strings&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;These are the tunnel domains used to build DNS requests.&lt;br /&gt;Every domain here must belong to the same tunnel you configured on the server.&lt;br /&gt;If this list is wrong, the client may build valid DNS queries that the server will simply ignore.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DATA_ENCRYPTION_METHOD&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Must match the server.&lt;br /&gt;&lt;code&gt;0=None&lt;/code&gt;, &lt;code&gt;1=XOR&lt;/code&gt;, &lt;code&gt;2=ChaCha20&lt;/code&gt;, &lt;code&gt;3=AES-128-GCM&lt;/code&gt;, &lt;code&gt;4=AES-192-GCM&lt;/code&gt;, &lt;code&gt;5=AES-256-GCM&lt;/code&gt;.&lt;br /&gt;XOR is lightweight but weaker. AEAD modes are stronger but have more overhead.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ENCRYPTION_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;String&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Shared secret used by the client codec.&lt;br /&gt;This must be exactly the same as the server-side encryption key.&lt;br /&gt;If the key is wrong, packets may be parsed as garbage and the tunnel will not work.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.2) 🧦 Local Proxy&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;LISTEN_IP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;127.0.0.1&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Valid IP string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Address where the client listens for local proxy users.&lt;br /&gt;Use &lt;code&gt;127.0.0.1&lt;/code&gt; for normal local-only usage.&lt;br /&gt;If some applications prefer IPv6 localhost on your system, using &lt;code&gt;localhost&lt;/code&gt; can be a better local-only choice.&lt;br /&gt;Use &lt;code&gt;0.0.0.0&lt;/code&gt; only if you want to share the proxy on the network and understand the security implications.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LISTEN_PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;18000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..65535&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Port for the local proxy.&lt;br /&gt;Your applications must use this port to send traffic into the tunnel.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_AUTH&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enables username/password authentication on the local SOCKS5 proxy.&lt;br /&gt;If you bind to &lt;code&gt;0.0.0.0&lt;/code&gt;, enabling this is strongly recommended.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_USER&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;master_dns_vpn&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Up to 255 bytes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Username for the local SOCKS5 proxy.&lt;br /&gt;Used only if &lt;code&gt;SOCKS5_AUTH=true&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_PASS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;master_dns_vpn&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Up to 255 bytes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Password for the local SOCKS5 proxy.&lt;br /&gt;Used only if &lt;code&gt;SOCKS5_AUTH=true&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.3) 📛 Local DNS&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;LOCAL_DNS_ENABLED&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If enabled, the client exposes a local DNS service and can resolve DNS through the tunnel.&lt;br /&gt;This is useful for reducing DNS hijacking or when you want applications to use the tunnel for DNS as well.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_IP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;127.0.0.1&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Valid IP string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Bind address for the local DNS listener.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;53&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..65535&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Port of the local DNS service.&lt;br /&gt;Port &lt;code&gt;53&lt;/code&gt; is standard, but on some systems it may already be used by another service.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_CACHE_MAX_RECORDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;5000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;1&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum number of local DNS cache records.&lt;br /&gt;A larger value reduces repeated DNS lookups but uses more memory.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_CACHE_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;28800.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long successful DNS records stay in the local cache.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_PENDING_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;300.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If a local DNS query is in progress, follower queries can wait for it instead of launching another upstream request.&lt;br /&gt;This value defines how long they may wait.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_CACHE_PERSIST_TO_FILE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If enabled, the local DNS cache can be written to disk for reuse between runs.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;LOCAL_DNS_CACHE_FLUSH_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;60.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How often the persisted local DNS cache is flushed to disk.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_RESPONSE_FRAGMENT_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;10.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long the client waits for missing DNS tunnel response fragments before giving up.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.4) ⚡ Resolver Selection, Duplication, Health, and Failover&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;RESOLVER_BALANCING_STRATEGY&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..8&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chooses how resolvers are selected.&lt;br /&gt;&lt;code&gt;0/2&lt;/code&gt; = Round Robin, &lt;code&gt;1&lt;/code&gt; = Random, &lt;code&gt;3&lt;/code&gt; = Least Loss, &lt;code&gt;4&lt;/code&gt; = Lowest Latency, &lt;code&gt;5&lt;/code&gt; = Hybrid Score, &lt;code&gt;6&lt;/code&gt; = Loss Then Latency, &lt;code&gt;7&lt;/code&gt; = Least Loss Top Random, &lt;code&gt;8&lt;/code&gt; = Least Loss Top Round Robin.&lt;br /&gt;The hybrid mode uses a weighted combined score. The loss-then-latency mode first shortlists by loss, then prefers lower latency inside that tier, and rotates among near-equal top candidates. The top-random mode picks randomly from the best loss tier so load does not stick to one resolver. The top-round-robin mode cycles through the same top loss tier with deterministic rotation.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PACKET_DUPLICATION_COUNT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to valid range in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Normal outgoing packet duplication count.&lt;br /&gt;Higher values increase traffic cost but improve survivability on weak links.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SETUP_PACKET_DUPLICATION_COUNT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to valid range in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Similar to &lt;code&gt;PACKET_DUPLICATION_COUNT&lt;/code&gt;, but used for setup-sensitive packets such as stream creation and other critical control events.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;STREAM_RESOLVER_FAILOVER_RESEND_THRESHOLD&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;1&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If a stream accumulates repeated resend pressure on the same preferred resolver, the client may fail over that stream to another resolver.&lt;br /&gt;This threshold controls how quickly that happens.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;STREAM_RESOLVER_FAILOVER_COOLDOWN&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2.5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Minimum delay between two failovers for the same stream.&lt;br /&gt;This prevents unstable oscillation between resolvers.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;RECHECK_INACTIVE_SERVERS_ENABLED&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enables background rechecks for currently disabled or unhealthy resolvers.&lt;br /&gt;If disabled, once a resolver becomes unusable, it will stay disabled until restart or manual rebuild.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AUTO_DISABLE_TIMEOUT_SERVERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enables automatic disabling of resolvers that keep timing out and show no successful activity.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;AUTO_DISABLE_TIMEOUT_WINDOW_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;30.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Time window used to decide whether a resolver is timeout-only.&lt;br /&gt;If all observations in this window are timeouts, it may be disabled.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;BASE_ENCODE_DATA&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If enabled, payloads are encoded in a base-safe format before tunneling.&lt;br /&gt;This usually reduces payload efficiency, but can help in strict resolver environments.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.5) 🗜️ Compression&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;UPLOAD_COMPRESSION_TYPE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..3&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0=OFF&lt;/code&gt;, &lt;code&gt;1=ZSTD&lt;/code&gt;, &lt;code&gt;2=LZ4&lt;/code&gt;, &lt;code&gt;3=ZLIB&lt;/code&gt;.&lt;br /&gt;Controls client-side compression for outgoing payloads.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DOWNLOAD_COMPRESSION_TYPE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..3&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Compression type expected or preferred for server-to-client payloads.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;COMPRESSION_MIN_SIZE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;120&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Minimum payload size before compression is attempted.&lt;br /&gt;Very small packets often grow instead of shrinking, so this avoids pointless compression work.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.6) 🧪 MTU Discovery and Initial Testing&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;MIN_UPLOAD_MTU&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;38&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive integer&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Smallest upload MTU the client accepts during resolver testing. Minimum enforced is the session-init payload size (10).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIN_DOWNLOAD_MTU&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;100&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive integer&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Smallest download MTU the client accepts during resolver testing. Minimum enforced is the session-accept payload size (20).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MAX_UPLOAD_MTU&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;150&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive integer&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Upper bound for upload MTU testing.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MAX_DOWNLOAD_MTU&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive integer&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Upper bound for download MTU testing.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_TEST_RETRIES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of retries for each MTU probe.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_TEST_TIMEOUT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Timeout for a single MTU probe.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_TEST_PARALLELISM&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of resolvers tested in parallel during MTU scanning.&lt;br /&gt;Higher values scan faster but use more CPU/network and may produce more noisy failures.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SAVE_MTU_SERVERS_TO_FILE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If enabled, successful resolver results are written to an output file.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_SERVERS_FILE_NAME&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;masterdnsvpn_success_test_{time}.log&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Output file name template for successful MTU-tested resolvers.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_SERVERS_FILE_FORMAT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;{IP} ({DOMAIN}) - UP: {UP_MTU} DOWN: {DOWN-MTU}&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Output format used in the MTU results file.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_USING_SECTION_SEPARATOR_TEXT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Optional separator text inserted into the MTU output file.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_REMOVED_SERVER_LOG_FORMAT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;Resolver {IP} ({DOMAIN}) removed at {TIME} due to {CAUSE}&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Log/output format when a resolver is removed from the valid set.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_ADDED_SERVER_LOG_FORMAT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;Resolver {IP} ({DOMAIN}) added back at {TIME} (UP {UP_MTU}, DOWN {DOWN_MTU})&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Log/output format when a resolver is restored.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MTU_REACTIVE_ADDED_SERVER_LOG_FORMAT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;Resolver {IP} ({DOMAIN}) added back at {TIME} after reactive recheck (UP {UP_MTU}, DOWN {DOWN_MTU})&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Log/output format when a resolver is restored by background health checks.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.7) 🧵 Runtime Workers, Queues, and Timers&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;RX_TX_WORKERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of shared runtime workers used for both UDP tunnel reads and writes.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;TUNNEL_PROCESS_WORKERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;6&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of workers processing tunnel packets after read.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;TUNNEL_PACKET_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;10.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Overall timeout for tunnel packet handling.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DISPATCHER_IDLE_POLL_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.020&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;When there is nothing to send, the dispatcher sleeps for this interval before polling again.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;RX_CHANNEL_SIZE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4096&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Capacity of the incoming tunnel packet channel.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS_UDP_ASSOCIATE_READ_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;30.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Read timeout for SOCKS UDP associate mode.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;CLIENT_TERMINAL_STREAM_RETENTION_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;45.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long terminal streams remain in client bookkeeping before full cleanup.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;CLIENT_CANCELLED_SETUP_RETENTION_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;120.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Retention time for setup streams cancelled before completion.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_INIT_RETRY_BASE_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Base delay for session-init retries.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_INIT_RETRY_STEP_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Step increment used in the retry schedule.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_INIT_RETRY_LINEAR_AFTER&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;After this many retries, the retry backoff becomes more linear.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_INIT_RETRY_MAX_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;60.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retry delay for session initialization.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_INIT_BUSY_RETRY_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;60.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Retry delay when the server explicitly responds with &lt;code&gt;SESSION_BUSY&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.8) 📡 Ping / Keepalive&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;PING_AGGRESSIVE_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.100&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Fastest ping interval used in the hottest activity state.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PING_LAZY_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.750&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Normal operating ping interval.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PING_COOLDOWN_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ping interval during cooldown.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PING_COLD_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;15.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ping interval when the session is cold/mostly idle.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PING_WARM_THRESHOLD_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;8.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Threshold after which the session is treated as warm.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PING_COOL_THRESHOLD_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;20.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Threshold after which the session is treated as cooling down.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PING_COLD_THRESHOLD_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;30.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;positive number&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Threshold after which the session is treated as cold.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.9) 🔄 ARQ and Packet Packing&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;MAX_PACKETS_PER_BATCH&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;8&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if invalid, fallback applies&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum number of control items the client tries to batch in one packet turn.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_WINDOW_SIZE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;600&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;valid positive range&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;ARQ send/receive window size per stream.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_INITIAL_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial retransmission timeout for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_MAX_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;5.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retransmission timeout for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_CONTROL_INITIAL_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial retransmission timeout for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_CONTROL_MAX_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;3.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retransmission timeout for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_MAX_CONTROL_RETRIES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum number of retries for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_INACTIVITY_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1800.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Stream inactivity timeout.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_PACKET_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2400.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL for data packets before they are abandoned.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_CONTROL_PACKET_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1200.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_MAX_DATA_RETRIES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1200&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retries for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_NACK_MAX_GAP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum gap size for NACK generation when packets arrive out of order.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_NACK_INITIAL_DELAY_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial delay before sending a NACK for missing data packets. Controls how eagerly the system requests retransmissions.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_NACK_REPEAT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Minimum interval before repeating a NACK for the same missing sequence.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_TERMINAL_DRAIN_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;120.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;After a stream becomes terminal, how long the client waits for queue drain.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_TERMINAL_ACK_WAIT_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;90.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long the client waits for the final terminal ACK.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.4.10) 🪵 Logging&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;LOG_LEVEL&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;INFO&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;usually &lt;code&gt;DEBUG&lt;/code&gt;, &lt;code&gt;INFO&lt;/code&gt;, &lt;code&gt;WARN&lt;/code&gt;, &lt;code&gt;ERROR&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Controls client log verbosity.&lt;br /&gt;&lt;code&gt;INFO&lt;/code&gt; is usually enough for normal operation.&lt;br /&gt;Use &lt;code&gt;DEBUG&lt;/code&gt; when investigating resolver health, failover, ARQ, or packet paths.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 3.5: 📖 Server Configuration (&lt;code&gt;server_config.toml&lt;/code&gt;)&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;ℹ️ Note: the sample server config contains a key named &lt;code&gt;CONFIG_VERSION&lt;/code&gt;, but the current Go code does not read it into &lt;code&gt;ServerConfig&lt;/code&gt;. For that reason it is not included in the table below and has no effect on real server behavior.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;3.5.1) 🌐 Tunnel Policy and Protocol Acceptance&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value in &lt;code&gt;server_config.toml.simple&lt;/code&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;DOMAIN&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;[&quot;v.domain.com&quot;]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;list of strings&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Domain or domains that this server treats as belonging to its tunnel.&lt;br /&gt;They must match the client &lt;code&gt;DOMAINS&lt;/code&gt;, otherwise tunnel packets will not be recognized correctly.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTOCOL_TYPE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;SOCKS5&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;only &lt;code&gt;&quot;SOCKS5&quot;&lt;/code&gt; or &lt;code&gt;&quot;TCP&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Determines what kind of setup the server accepts for new streams.&lt;br /&gt;In &lt;code&gt;SOCKS5&lt;/code&gt; mode, the server expects &lt;code&gt;PACKET_SOCKS5_SYN&lt;/code&gt; and takes the target from the client payload.&lt;br /&gt;In &lt;code&gt;TCP&lt;/code&gt; mode, setup happens through &lt;code&gt;PACKET_STREAM_SYN&lt;/code&gt; and the server connects to &lt;code&gt;FORWARD_IP:FORWARD_PORT&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MIN_VPN_LABEL_LENGTH&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;not shown in sample&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if &lt;code&gt;&amp;lt;=0&lt;/code&gt;, fallback to &lt;code&gt;3&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Minimum tunnel data label length.&lt;br /&gt;This helps avoid confusing ordinary DNS queries with tunnel queries.&lt;br /&gt;If this parameter is missing from your old README or config, it is worth adding because the code supports it.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SUPPORTED_UPLOAD_COMPRESSION_TYPES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;[0, 1, 2, 3]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;valid compression IDs only&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Compression modes the server allows clients to request for upload traffic.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SUPPORTED_DOWNLOAD_COMPRESSION_TYPES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;[0, 1, 2, 3]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;valid compression IDs only&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Same idea for download traffic from server to client.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.2) 📥 UDP Listener and Front-Door Capacity&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;UDP_HOST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;0.0.0.0&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;if empty, this value is used&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Address where the DNS server binds.&lt;br /&gt;&lt;code&gt;0.0.0.0&lt;/code&gt; means listen on all interfaces.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;UDP_PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;53&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1..65535&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;UDP port used by the server.&lt;br /&gt;In most deployments this should remain &lt;code&gt;53&lt;/code&gt; so resolvers can query it directly.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;UDP_READERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;auto-default if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of goroutines reading directly from the UDP socket.&lt;br /&gt;A larger number may help on very busy servers, but beyond a point it only increases context switching.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_REQUEST_WORKERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;8&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;auto-default if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of workers that take requests from the front-door queue and pass them into the session/decode layer.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MAX_CONCURRENT_REQUESTS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;16384&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Capacity of the incoming request queue.&lt;br /&gt;If this queue fills up, packets are dropped and the server emits rate-limited overload logs.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKET_BUFFER_SIZE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4194304&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Operating-system socket buffer size request for the UDP listener.&lt;br /&gt;This matters for heavy bursts of incoming traffic.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;MAX_PACKET_SIZE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;65535&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Size of the largest packet buffer that the packet pool allocates.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DROP_LOG_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Minimum interval between repeated overload/drop logs, to avoid log spam during pressure.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.3) 🧠 Deferred Session Runtime&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;DEFERRED_SESSION_WORKERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped up to &lt;code&gt;128&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Number of deferred-session workers.&lt;br /&gt;These workers handle ordering-sensitive and setup-heavy tasks such as stream setup, SOCKS connect, and some DNS assembly tasks.&lt;br /&gt;Too few can slow down stream setup; too many can create unnecessary contention.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DEFERRED_SESSION_QUEUE_LIMIT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4096&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped to &lt;code&gt;256..14336&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Queue capacity for deferred-session work.&lt;br /&gt;If it fills up, new setup or deferred tasks may be rejected.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_ORPHAN_QUEUE_INITIAL_CAPACITY&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;auto&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;derived internally&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial orphan/control queue sizing is derived automatically from server worker counts and batching pressure.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;STREAM_QUEUE_INITIAL_CAPACITY&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;auto&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;derived internally&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Per-stream queue initial capacity is derived automatically from ARQ window size and packing pressure.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_FRAGMENT_STORE_CAPACITY&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;auto&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;derived internally&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;DNS tunnel fragment store capacity is derived automatically from request concurrency and worker count.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_FRAGMENT_STORE_CAPACITY&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;auto&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;derived internally&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SOCKS5 setup fragment store capacity is derived automatically from deferred-session pressure and concurrency.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.4) 🍪 Session / Stream Lifecycle and Invalid Cookie Tracking&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;INVALID_COOKIE_WINDOW_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Time window used to count invalid-cookie errors.&lt;br /&gt;This helps the server detect broken sessions or clients repeatedly using a wrong cookie.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;INVALID_COOKIE_ERROR_THRESHOLD&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If invalid-cookie errors reach this threshold inside the window above, the server responds more aggressively.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;300.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If a session has no activity for this long, the server times it out and cleans it up.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_CLEANUP_INTERVAL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;30.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How often the periodic session cleanup loop runs.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;CLOSED_SESSION_RETENTION_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;600.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long closed-session metadata is kept so late packets can still be recognized.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SESSION_INIT_REUSE_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;600.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long session-init signatures are kept for reuse and simple replay protection.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;RECENTLY_CLOSED_STREAM_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;600.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long recently closed streams remain in the “recently closed” table so late SYN packets do not revive them.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;RECENTLY_CLOSED_STREAM_CAP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..1000000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum number of recently closed stream entries the server keeps.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;TERMINAL_STREAM_RETENTION_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;45.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long terminal streams remain before final sweeping.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.5) 📛 DNS Tunnel Upstream&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;DNS_UPSTREAM_SERVERS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;[&quot;1.1.1.1:53&quot;, &quot;1.0.0.1:53&quot;]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if empty&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;When the client sends a real DNS request through the tunnel, the server forwards it to these upstream resolvers.&lt;br /&gt;This section is only for DNS-over-tunnel, not for the tunnel transport itself.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_UPSTREAM_TIMEOUT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;4.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Timeout for each exchange with the real DNS upstream.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_INFLIGHT_WAIT_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;60.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;0.1..120&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If several identical DNS queries arrive at the same time, only one upstream lookup is performed and the rest wait as followers.&lt;br /&gt;This value controls how long followers wait for the main lookup result.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_FRAGMENT_ASSEMBLY_TIMEOUT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;300.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How long the server waits for all fragments of a tunneled DNS query to arrive.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_CACHE_MAX_RECORDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;50000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum size of the server’s internal DNS cache for tunneled DNS queries.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DNS_CACHE_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;300.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL of the server-side internal DNS cache.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.6) 🌐 Forwarding and External SOCKS&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;SOCKS_CONNECT_TIMEOUT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;120.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;=0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Timeout for the server’s outbound connection to the final target or to an external SOCKS5 server.&lt;br /&gt;The sample shows a higher value, but the real code fallback is &lt;code&gt;8&lt;/code&gt; seconds.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;USE_EXTERNAL_SOCKS5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If &lt;code&gt;true&lt;/code&gt;, the server sends outbound traffic through an external SOCKS5 server instead of connecting directly.&lt;br /&gt;This is mainly useful for chaining or hiding server egress.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_AUTH&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;true/false&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Whether the external SOCKS5 server requires username/password authentication.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_USER&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;admin&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;up to 255 bytes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Username for the external SOCKS5 server.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;SOCKS5_PASS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;123456&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;up to 255 bytes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Password for the external SOCKS5 server.&lt;br /&gt;If auth is enabled and username/password are invalid, the config becomes invalid.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;FORWARD_IP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;string&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;In &lt;code&gt;TCP&lt;/code&gt; mode, this is the fixed outbound target.&lt;br /&gt;In &lt;code&gt;SOCKS5&lt;/code&gt; mode with &lt;code&gt;USE_EXTERNAL_SOCKS5=true&lt;/code&gt;, this is the address of the upstream SOCKS5 server itself.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;FORWARD_PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..65535&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Port of the endpoint above.&lt;br /&gt;If &lt;code&gt;USE_EXTERNAL_SOCKS5=true&lt;/code&gt;, this must be a valid non-zero value.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.7) 🔐 Security&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;DATA_ENCRYPTION_METHOD&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0..5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Must match the client.&lt;br /&gt;If an invalid value is supplied, the current code normalizes it back to &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ENCRYPTION_KEY_FILE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;encrypt_key.txt&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;relative or absolute path&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Path to the server encryption key file.&lt;br /&gt;If it is relative, it is resolved relative to the config directory.&lt;br /&gt;If it is empty, the fallback is &lt;code&gt;encrypt_key.txt&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.8) 🔄 ARQ, Packing, and Control TTLs&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;MAX_PACKETS_PER_BATCH&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;fallback if &lt;code&gt;&amp;lt;1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum number of control blocks the server tries to pack into one response.&lt;br /&gt;Important note: if the value is invalid, the real code fallback is &lt;code&gt;20&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PACKET_BLOCK_CONTROL_DUPLICATION&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..16&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;How many extra turns the last packed control block should be repeated.&lt;br /&gt;&lt;code&gt;1&lt;/code&gt; effectively means duplication is off.&lt;br /&gt;This is useful on lossy links so critical ACK/close data arrives more reliably.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;STREAM_SETUP_ACK_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;400.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL of ACK packets related to stream setup.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;STREAM_RESULT_PACKET_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;300.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL of result packets such as connect success/failure that must reach the client.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;STREAM_FAILURE_PACKET_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;120.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL of failure packets for setup or outbound errors.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_WINDOW_SIZE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;800&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;1..16384&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;ARQ window size per stream on the server.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_INITIAL_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;0.05..60&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial retransmission timeout for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_MAX_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;5.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;[ARQ_INITIAL_RTO_SECONDS, 120]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retransmission timeout for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_CONTROL_INITIAL_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;0.05..60&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial retransmission timeout for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_CONTROL_MAX_RTO_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;3.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;[ARQ_CONTROL_INITIAL_RTO_SECONDS, 120]&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retransmission timeout for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_MAX_CONTROL_RETRIES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;300&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;5..5000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retries for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_INACTIVITY_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1800.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;30..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Inactivity timeout for streams.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_PACKET_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;2400.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;30..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_CONTROL_PACKET_TTL_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1200.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;30..86400&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTL for control packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_MAX_DATA_RETRIES&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1200&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;60..100000&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maximum retries for data packets.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_NACK_MAX_GAP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;0..255&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;If out-of-order packets arrive, this controls how large a missing gap may be reported with NACK.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_NACK_INITIAL_DELAY_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0.3&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamped in code&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Initial delay before sending a NACK for missing data packets. Controls how eagerly the system requests retransmissions.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_DATA_NACK_REPEAT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;0.1..30&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;For a missing sequence, this defines how soon a repeated NACK may be issued again.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_TERMINAL_DRAIN_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;120.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;10..3600&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;After a stream becomes terminal, how long the server waits for queues to drain.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;ARQ_TERMINAL_ACK_WAIT_TIMEOUT_SECONDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;90.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;clamp to &lt;code&gt;5..3600&lt;/code&gt; seconds&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;After terminal close, how long the server waits for the final ACK.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.9) 🪵 Logging&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Parameter&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Sample Value&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Allowed Values / Real Behavior&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Full Explanation&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;LOG_LEVEL&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;&quot;INFO&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;usually &lt;code&gt;DEBUG&lt;/code&gt;, &lt;code&gt;INFO&lt;/code&gt;, &lt;code&gt;WARN&lt;/code&gt;, &lt;code&gt;ERROR&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Server log level.&lt;br /&gt;For normal production usage, &lt;code&gt;INFO&lt;/code&gt; is usually enough.&lt;br /&gt;For deep investigation of sessions, deferred workers, or ARQ behavior, temporarily use &lt;code&gt;DEBUG&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;3.5.10) Session Policy Sync&lt;/h3&gt; 
&lt;p&gt;During &lt;code&gt;SESSION_INIT&lt;/code&gt;, the server may append a compact policy block to &lt;code&gt;SESSION_ACCEPT&lt;/code&gt;. The client applies these limits immediately before normal runtime starts.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Server-enforced &lt;code&gt;max&lt;/code&gt; values reduce the client only when the requested value is higher.&lt;/li&gt; 
 &lt;li&gt;Server-enforced &lt;code&gt;min&lt;/code&gt; values raise the client only when the requested value is lower.&lt;/li&gt; 
 &lt;li&gt;MTU limits are enforced on both sides: 
  &lt;ul&gt; 
   &lt;li&gt;The server clamps the accepted session MTU during init.&lt;/li&gt; 
   &lt;li&gt;The client also clamps its local runtime settings after decode.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Runtime-derived state such as worker counts, queues, fragment stores, and packed-block sizing is rebuilt from the effective synced values.&lt;/li&gt; 
 &lt;li&gt;Legacy servers that still send the old 7-byte &lt;code&gt;SESSION_ACCEPT&lt;/code&gt; payload remain compatible; policy sync is simply skipped.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 3.6: 🧪 Testing, Finding, and Scanning Resolvers&lt;/h2&gt; 
&lt;p&gt;Finding suitable resolvers is one of the most important parts of any DNS tunnel project. In this project, the client can automatically find healthy resolvers and test their MTU. You can use this client feature to discover healthy resolvers, test your own resolvers, or scan resolver ranges. Just place all IPs line by line into &lt;code&gt;client_resolvers.txt&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Then back up your current &lt;code&gt;client_config.toml&lt;/code&gt;, open it with a text editor, and replace the following values with these suggested ones:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Lower the MTU ceiling so you find all servers that really behave as DNS servers, and make Min and Max equal to speed up scanning by avoiding automatic binary-search style probing.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;MIN_UPLOAD_MTU=30
MIN_DOWNLOAD_MTU=40
MAX_UPLOAD_MTU=30
MAX_DOWNLOAD_MTU=40
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Increase the number of parallel resolver checks:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;MTU_TEST_PARALLELISM = 200
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Save healthy resolver results into a text file for later review:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;SAVE_MTU_SERVERS_TO_FILE = true
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Change the output format so only the IP is written, which is easier to reuse:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;MTU_SERVERS_FILE_FORMAT = &quot;{IP}&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Reduce retries and timeout to speed up the scan. With these settings you may miss some slightly slower but still healthy resolvers, so increase them if you want more accurate results.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;MTU_TEST_RETRIES = 1
MTU_TEST_TIMEOUT = 1.0
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ &lt;strong&gt;Important note:&lt;/strong&gt; You must already have a server running and must place its key and domain into &lt;code&gt;client_config.toml&lt;/code&gt; before doing this. Otherwise the client cannot perform MTU tests correctly and will likely mark all resolvers invalid.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Now run the program and wait for the tests to finish. After the process completes, close the program. You will find the saved resolver list in a new &lt;code&gt;.txt&lt;/code&gt; file next to the main file, and you can then use it as your new &lt;code&gt;client_resolvers.txt&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;After that, return to your previous settings and use the healthy resolvers you discovered for the best performance.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 3.7: ⚡ Better MTU Understanding and Practical Fast Tuning&lt;/h2&gt; 
&lt;p&gt;This project depends heavily on a suitable MTU. If you set the MTU too high:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;more resolvers fail&lt;/li&gt; 
 &lt;li&gt;startup becomes longer&lt;/li&gt; 
 &lt;li&gt;fragmentation and loss increase&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you set it too low:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;speed decreases&lt;/li&gt; 
 &lt;li&gt;but stability improves&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Practical suggestion&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start with the sample config.&lt;/li&gt; 
 &lt;li&gt;Let the client test resolvers.&lt;/li&gt; 
 &lt;li&gt;Review the MTU results and the number of valid resolvers.&lt;/li&gt; 
 &lt;li&gt;If quality is poor, lower &lt;code&gt;MIN_UPLOAD_MTU&lt;/code&gt; and &lt;code&gt;MIN_DOWNLOAD_MTU&lt;/code&gt; slightly.&lt;/li&gt; 
 &lt;li&gt;If you want faster startup, narrow the &lt;code&gt;MIN/MAX&lt;/code&gt; MTU range and bring them closer together.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 4: Mobile Usage Guide (Android and iPhone) 📱&lt;/h2&gt; 
&lt;p&gt;Since there is currently no official Android or iOS application published directly by us, you can still use the tunnel on mobile with one of these methods. You can also use Android clients built by other developers that are introduced in Section 5.1.&lt;/p&gt; 
&lt;h3&gt;Method 1: Share the proxy from your computer 📶&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Set &lt;code&gt;LISTEN_IP&lt;/code&gt; to &lt;code&gt;0.0.0.0&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Run the client on your computer&lt;/li&gt; 
 &lt;li&gt;Put your phone and computer on the same network&lt;/li&gt; 
 &lt;li&gt;Configure a &lt;strong&gt;SOCKS5&lt;/strong&gt; proxy on the phone using the computer IP and &lt;code&gt;LISTEN_PORT&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Method 2: Run the client on an intermediate server 🏗️&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Run the main server on the final destination&lt;/li&gt; 
 &lt;li&gt;Run the client on an intermediate server&lt;/li&gt; 
 &lt;li&gt;Set &lt;code&gt;LISTEN_IP&lt;/code&gt; to &lt;code&gt;0.0.0.0&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Connect the phone to the SOCKS5 proxy on that intermediate server&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Method 3: Combine it with other panels or services 🛠️&lt;/h3&gt; 
&lt;p&gt;If you already have another panel or service on a server, you can point its outbound path to the local SOCKS5 of the MasterDnsVPN client and use it as the exit path.&lt;/p&gt; 
&lt;h3&gt;⚠️ Important Security Notes for Mobile&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;If &lt;code&gt;LISTEN_IP = &quot;0.0.0.0&quot;&lt;/code&gt;, enable SOCKS5 authentication or make sure your network is trusted. Otherwise anyone on that network can use your tunnel. Using username/password on Internet-facing SOCKS5 is strongly recommended.&lt;/li&gt; 
 &lt;li&gt;You can also change the default &lt;code&gt;LISTEN_PORT&lt;/code&gt; so it is less exposed to automated scans.&lt;/li&gt; 
 &lt;li&gt;If devices cannot connect, check the system firewall.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 5: Side Notes and Extra Information 🖥️&lt;/h2&gt; 
&lt;h3&gt;Section 5.1: Community Projects Related to MasterDnsVPN 🧩&lt;/h3&gt; 
&lt;p&gt;In this section, we introduce a few projects related to MasterDnsVPN that have been developed by other people. They may be useful for practical use, inspiration, or experimentation. Please note that these projects are independent from MasterDnsVPN itself and may behave differently or include their own additional features and design choices.&lt;/p&gt; 
&lt;p&gt;If you use these projects or benefit from their ideas, please consider supporting their developers by starring their GitHub repositories. If you encounter issues or have suggestions, it is best to open an issue or, if possible, contribute with a pull request to those projects directly.&lt;/p&gt; 
&lt;p&gt;You can review these related projects here:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Hidden-Node/MasterDnsVPN-AndroidClient&quot;&gt;MDV HN Edition Android Client&lt;/a&gt; An Android application built around MasterDnsVPN that allows connecting to MasterDnsVPN servers from a phone. This project is developed independently by Hidden Node.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/RevocGG/MasterDnsVPN-AndroidGG&quot;&gt;MasterDnsVPN GG Android Client&lt;/a&gt; Another Android client built around MasterDnsVPN. This project is developed independently by RevocGG.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/datacoder-io/MasterDnsVPN-ConfigMaker&quot;&gt;Persian Config Builder for MasterDnsVPN&lt;/a&gt; - &lt;a href=&quot;https://datacoder-io.github.io/MasterDnsVPN-ConfigMaker&quot;&gt;Web Config Builder&lt;/a&gt; A tool that helps create MasterDnsVPN configuration files with Persian explanations and a guided interface. This project is developed independently by datacoder-io.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/abolix/MasterDnsWeb&quot;&gt;MasterDnsWeb (Web Management Client)&lt;/a&gt; A web-based management client for MasterDnsVPN, designed to make it easy to manage one or multiple instances at the same time. Developed independently by Abolix.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/kamalalhagh/kevinnet-dns&quot;&gt;KevinNet DNS&lt;/a&gt; A companion tool for MasterDnsVPN that discovers and validates working DNS resolvers, especially for users in Iran. It generates ready-to-use configuration files and performs end-to-end tunnel verification. This project is developed independently by Kevin Haji.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 5.2: Fixing Port 53 Already in Use (Linux Server) 🛑&lt;/h3&gt; 
&lt;p&gt;On most Linux distributions, port &lt;code&gt;53&lt;/code&gt; is already occupied by &lt;code&gt;systemd-resolved&lt;/code&gt;. If the server does not start:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo nano /etc/systemd/resolved.conf
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Set this value:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;DNSStubListener=no
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl restart systemd-resolved
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ &lt;strong&gt;Important warning:&lt;/strong&gt; You cannot run multiple DNS tunnel projects at the same time on the same server on port &lt;code&gt;53&lt;/code&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Section 5.3: Integrate with 3X-UI and use as an Outbound in other panels 🧩&lt;/h3&gt; 
&lt;p&gt;You can use the MasterDnsVPN client as a local proxy inside panels such as 3X-UI or any other system that supports local outbound proxies. Follow these steps:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run the MasterDnsVPN client on the same server where your panel is running.&lt;/li&gt; 
 &lt;li&gt;In 3X-UI, go to &lt;strong&gt;Inbound&lt;/strong&gt; and create a new inbound (VLESS/VMess or any protocol you want).&lt;/li&gt; 
 &lt;li&gt;Open &lt;strong&gt;Xray Configs&lt;/strong&gt;, then go to the &lt;strong&gt;Outbound&lt;/strong&gt; tab.&lt;/li&gt; 
 &lt;li&gt;Click &lt;strong&gt;Add Outbound&lt;/strong&gt; to create a new outbound.&lt;/li&gt; 
 &lt;li&gt;Set &lt;strong&gt;Protocol&lt;/strong&gt; to &lt;strong&gt;Socks&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Choose a tag (for example: &lt;code&gt;MasterDnsVPN-Out&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;In &lt;strong&gt;Address&lt;/strong&gt;, enter the local IP of the MasterDnsVPN client (usually &lt;code&gt;127.0.0.1&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;In &lt;strong&gt;Port&lt;/strong&gt;, enter the &lt;code&gt;LISTEN_PORT&lt;/code&gt; you set in &lt;code&gt;client_config.toml&lt;/code&gt; (for example &lt;code&gt;18000&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;If SOCKS authentication is enabled in MasterDnsVPN, enter the same username/password here.&lt;/li&gt; 
 &lt;li&gt;Click &lt;strong&gt;Add Outbound&lt;/strong&gt; to save it.&lt;/li&gt; 
 &lt;li&gt;Go to the &lt;strong&gt;Routing Rules&lt;/strong&gt; tab and click &lt;strong&gt;Add Rule&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;In &lt;strong&gt;Inbound Tags&lt;/strong&gt;, pick the inbound you created.&lt;/li&gt; 
 &lt;li&gt;In &lt;strong&gt;Outbound Tags&lt;/strong&gt;, select the &lt;code&gt;MasterDnsVPN-Out&lt;/code&gt; tag.&lt;/li&gt; 
 &lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt; and &lt;strong&gt;Restart Xray&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Now all traffic for that inbound will go through MasterDnsVPN and exit via your DNS tunnel.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 6: 🛠️ System Architecture and How It Works&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;MasterDnsVPN&lt;/strong&gt; combines Session Multiplexing, Resolver Balancing, Packet Duplication, a custom ARQ layer, and a Deferred Session Runtime on top of UDP/DNS to avoid the usual limitations of ordinary tunnels.&lt;/p&gt; 
&lt;h3&gt;Section 6.1: 🌐 High-Level Architecture Diagram&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;graph TD
    subgraph Client_Side [&quot;🖥️ User Device (Client)&quot;]
        App[&quot;📱 Applications (Browser, Telegram, etc.)&quot;]
        Proxy[&quot;🧦 Local SOCKS5 / TCP Proxy&quot;]
        LDNS[&quot;📛 Local DNS (Optional)&quot;]
        ResolverRuntime[&quot;⚡ Balancer + Duplication + Resolver Health&quot;]
        ClientARQ[&quot;🔄 ARQ + Session/Stream Runtime&quot;]
    end

    subgraph DNS_Network [&quot;🌐 Public DNS Network&quot;]
        R1[&quot;📡 Resolver 1&quot;]
        R2[&quot;📡 Resolver 2&quot;]
        RN[&quot;📡 Resolver N&quot;]
    end

    subgraph Server_Side [&quot;🖥️ Remote Server&quot;]
        UDP[&quot;📥 UDP Listener + Request Workers&quot;]
        Sessions[&quot;🧠 Session Store + Deferred Workers&quot;]
        ServerARQ[&quot;🔄 Server ARQ + Packed Control Blocks&quot;]
        DNSUp[&quot;📛 DNS Upstream / Cache&quot;]
        Out[&quot;🌐 Direct Dial or External SOCKS5&quot;]
    end

    App --&amp;gt; Proxy
    App --&amp;gt; LDNS
    Proxy --&amp;gt; ClientARQ
    LDNS --&amp;gt; ClientARQ
    ClientARQ --&amp;gt; ResolverRuntime
    ResolverRuntime --&amp;gt; R1
    ResolverRuntime --&amp;gt; R2
    ResolverRuntime --&amp;gt; RN
    R1 --&amp;gt; UDP
    R2 --&amp;gt; UDP
    RN --&amp;gt; UDP
    UDP --&amp;gt; Sessions
    Sessions --&amp;gt; ServerARQ
    Sessions --&amp;gt; DNSUp
    ServerARQ --&amp;gt; Out
    DNSUp --&amp;gt; UDP
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Section 6.2: 🔄 Packet Lifecycle and Flow&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;sequenceDiagram
    participant App as 📱 User App
    participant Client as 🖥️ Client
    participant DNS as 📡 Resolvers
    participant Server as 🖥️ Server
    participant Target as 🌐 Final Target

    App-&amp;gt;&amp;gt;Client: Create SOCKS5 / TCP connection
    Note over Client: Build Session/Stream&amp;lt;br/&amp;gt;Encrypt, ARQ, choose resolver
    Client-&amp;gt;&amp;gt;DNS: Send DNS query with duplication and balancing
    DNS-&amp;gt;&amp;gt;Server: Deliver query to the server NS
    Note over Server: Checksum / Cookie / Session lookup&amp;lt;br/&amp;gt;Deferred setup / ARQ / Queueing
    Server-&amp;gt;&amp;gt;Target: Direct dial or external SOCKS5
    Target--&amp;gt;&amp;gt;Server: Return target response
    Note over Server: Put data into ARQ&amp;lt;br/&amp;gt;Build ACKs and packed control blocks
    Server--&amp;gt;&amp;gt;DNS: DNS response
    DNS--&amp;gt;&amp;gt;Client: DNS reply
    Note over Client: ARQ reorder / ACK consume / deliver to app
    Client--&amp;gt;&amp;gt;App: Ordered clean data
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Section 6.3: 🧠 Core Concepts Used by the System&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Concept&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Description&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;Session&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;One overall connection between client and server&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Stream&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;One independent logical connection carried inside a session&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Resolver Runtime&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Resolver selection, duplication, health tracking, auto-disable, and recheck&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;ARQ&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ordering, ACK, retransmission, timeout, and terminal handling&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Deferred Session Runtime&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ordering-sensitive tasks such as setup, DNS query handling, and sensitive packet flows&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Packed Control Blocks&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Multiple small ACK or control packets packed into one block&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Synced MTU&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;The shared MTU chosen across the healthy resolver pool&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Section 7: ⚙️ Advanced Technical Notes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;⚡ &lt;strong&gt;Direct connect or external SOCKS5:&lt;/strong&gt; If &lt;code&gt;USE_EXTERNAL_SOCKS5 = false&lt;/code&gt;, the server connects directly to the target. If &lt;code&gt;true&lt;/code&gt;, it chains through an external SOCKS5 proxy. In general usage you usually do not need an external SOCKS5 server, so this can stay disabled.&lt;/li&gt; 
 &lt;li&gt;🧠 &lt;strong&gt;Per-stream resolver failover:&lt;/strong&gt; If a stream gets stuck on a weak resolver, its preferred resolver can move to another one.&lt;/li&gt; 
 &lt;li&gt;📦 &lt;strong&gt;Repeated packed control blocks:&lt;/strong&gt; The server can repeat the last packed control block for extra turns so important ACK/close packets have a better chance to survive on lossy links.&lt;/li&gt; 
 &lt;li&gt;🔒 &lt;strong&gt;Server-side key generation:&lt;/strong&gt; If &lt;code&gt;encrypt_key.txt&lt;/code&gt; does not exist, the server creates it during startup.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤝 Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome all contributions. If you have an idea, bug report, or performance improvement, please open an Issue or Pull Request.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/issues&quot;&gt;Issues&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/masterking32/MasterDnsVPN/pulls&quot;&gt;Pull Requests&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;This project is published under the &lt;strong&gt;MIT&lt;/strong&gt; license. For more details, see the &lt;code&gt;LICENSE&lt;/code&gt; file.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;👨‍💻 Developer&lt;/h2&gt; 
&lt;p&gt;Developed with ❤️ by: &lt;a href=&quot;https://github.com/masterking32&quot;&gt;&lt;strong&gt;MasterkinG32&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/1136974076/fa53e32e-d57e-4221-8775-e4f3f2b8344f" medium="image" />
      
    </item>
    
    <item>
      <title>chenhg5/cc-connect</title>
      <link>https://github.com/chenhg5/cc-connect</link>
      <description>&lt;p&gt;Bridge local AI coding agents (Claude Code, Cursor, Gemini CLI, Codex) to messaging platforms (Feishu/Lark, DingTalk, Slack, Telegram, Discord, LINE, WeChat Work). Chat with your AI dev assistant from anywhere — no public IP required for most platforms.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/banner.svg?sanitize=true&quot; alt=&quot;CC-Connect Banner&quot; width=&quot;800&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/chenhg5/cc-connect/actions/workflows/ci.yml&quot;&gt; &lt;img src=&quot;https://github.com/chenhg5/cc-connect/actions/workflows/ci.yml/badge.svg?sanitize=true&quot; alt=&quot;CI Status&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/chenhg5/cc-connect/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/chenhg5/cc-connect?include_prereleases&quot; alt=&quot;Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/cc-connect&quot;&gt; &lt;img src=&quot;https://img.shields.io/npm/dm/cc-connect?logo=npm&quot; alt=&quot;npm downloads&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/chenhg5/cc-connect/raw/main/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/License-MIT-yellow.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/chenhg5/cc-connect&quot;&gt; &lt;img src=&quot;https://goreportcard.com/badge/github.com/chenhg5/cc-connect&quot; alt=&quot;Go Report Card&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.gg/kHpwgaM4kq&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;a href=&quot;https://t.me/+odGNDhCjbjdmMmZl&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Telegram-Group-26A5E4?logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Telegram&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/README.md&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/README.zh-CN.md&quot;&gt;中文&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/23266&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/23266&quot; alt=&quot;chenhg5/cc-connect | 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;h2&gt;❤️ Sponsor&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Want to appear here? Contact: &lt;a href=&quot;mailto:chg80333@gmail.com&quot;&gt;chg80333@gmail.com&lt;/a&gt; | WeChat: mongorz&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;details open&gt; 
 &lt;summary&gt;Sponsors&lt;/summary&gt; 
 &lt;p&gt;&lt;a href=&quot;https://platform.minimax.io/subscribe/token-plan?code=lqYrKBvjke&amp;amp;source=link&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/banners/minimax-en.jpeg&quot; alt=&quot;MiniMax&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;MiniMax-M2.7 is a next-generation large language model designed for autonomous evolution and real-world productivity. Unlike traditional models, M2.7 actively participates in its own improvement through agent teams, dynamic tool use, and reinforcement learning loops. It delivers strong performance in software engineering (56.22% on SWE-Pro, 55.6% on VIBE-Pro, 57.0% on Terminal Bench 2) and excels in complex office workflows, achieving a leading 1495 ELO on GDPval-AA. With high-fidelity editing across Word, Excel, and PowerPoint, and a 97% adherence rate across 40+ complex skills, M2.7 sets a new standard for building AI-native workflows and organizations.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://platform.minimax.io/subscribe/token-plan?code=lqYrKBvjke&amp;amp;source=link&quot;&gt;Click here&lt;/a&gt; to get an exclusive 12% off the MiniMax Token Plan + voucher for cc-connect users!&lt;/p&gt; 
 &lt;hr /&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://aigocode.com/invite/CYY3C85C&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/aigocode.png&quot; alt=&quot;AIGoCode&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to AIGoCode for sponsoring this project! AIGoCode is an all-in-one platform that integrates Claude Code, Codex, and the latest Gemini models, providing you with stable, efficient, and highly cost-effective AI coding services. The platform offers flexible subscription plans, zero risk of account suspension, direct access with no VPN required, and lightning-fast responses. AIGoCode has prepared a special benefit for cc-connect users: if you register via &lt;a href=&quot;https://aigocode.com/invite/CYY3C85C&quot;&gt;this link&lt;/a&gt;, you&#39;ll receive an extra 10% bonus credit on your first top-up!&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://aihubmix.com/?aff=mGTx&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/aihubmix.png&quot; alt=&quot;AIHubMix&quot; width=&quot;120&quot; /&gt;&lt;/a&gt; &lt;b&gt;AIHubMix&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to AIHubMix for sponsoring this project! AIHubMix offers deep integration with 500+ global models including OpenAI, Claude, Gemini, Qwen, DeepSeek, Kimi. Unlimited concurrency, production-grade stability on Google Cloud. One API Key drives all your Agents with native OpenAI/Anthropic/Gemini format support — zero code changes. Pay-as-you-go pricing aligned with official providers, plus free models like coding-glm-5.1-free. &lt;a href=&quot;https://aihubmix.com/?aff=mGTx&quot;&gt;Click here to sign up!&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://nekocode.ai/?aff=CC-CONNECT&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/nekocode.jpg&quot; alt=&quot;NekoCode&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to NekoCode for sponsoring this project! NekoCode provides reliable, stable, and efficient API relay services for Claude and CodeX with transparent pricing. Exclusive 10% discount for cc-connect users with promo code: CC-CONNECT. High-value, stable AI model access for developers. Register via &lt;a href=&quot;https://nekocode.ai/?aff=CC-CONNECT&quot;&gt;this link&lt;/a&gt;.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://www.dmxapi.cn/register?aff=NDln&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/dmx-en.jpg&quot; alt=&quot;DMXAPI&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to DMXAPI for sponsoring this project! DMXAPI provides global large model API services to 200+ enterprise users. One API key for all global models. Features include: instant invoicing, unlimited concurrency, starting from $0.15, 24/7 technical support. GPT/Claude/Gemini all at 32% off, domestic models 20-50% off, Claude Code exclusive models at 66% off! Register via &lt;a href=&quot;https://www.dmxapi.cn/register?aff=NDln&quot;&gt;this link&lt;/a&gt;.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://www.shengsuanyun.com/?from=CH_67XCLZGS&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/shengsuanyun.svg?sanitize=true&quot; alt=&quot;Shengsuanyun&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to Shengsuanyun for sponsoring this project! Shengsuanyun is a super factory dedicated to serving AI Native Teams, an industrial-grade AI task parallel execution platform, and a model marketplace that aggregates and supplies computing power from domestic and international LLM and image/video multimedia models such as Claude, Chatgpt, and Gemini. It guarantees no reverse engineering or data manipulation, boasts a 99.7% SLA availability across the entire site, and its &lt;a href=&quot;https://watch.shengsuanyun.com/status/shengsuanyun&quot;&gt;monitoring interface&lt;/a&gt; is consistently green. Furthermore, it offers an enterprise-grade customized gateway for refined cost and access control, featuring intelligent routing, security protection, and BYOK enterprise-provided key hosting. The platform is billed on a pay-as-you-go basis and with a tokens plan (coming soon), and invoices are available. New users who register using &lt;a href=&quot;https://www.shengsuanyun.com/?from=CH_67XCLZGS&quot;&gt;this link&lt;/a&gt; will receive 10 yuan in model power and a 10% bonus on their first deposit.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://www.aicodemirror.com/register?invitecode=KDHMUP&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/aicodemirror.jpg&quot; alt=&quot;AICodeMirror&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to AICodeMirror for sponsoring this project! AICodeMirror provides official high-stability relay services for Claude Code / Codex / Gemini CLI, with enterprise-grade concurrency, fast invoicing, and 24/7 dedicated technical support. Claude Code / Codex / Gemini official channels at 38% / 2% / 9% of original price, with extra discounts on top-ups! AICodeMirror offers special benefits for CC users: register via &lt;a href=&quot;https://www.aicodemirror.com/register?invitecode=KDHMUP&quot;&gt;this link&lt;/a&gt; to enjoy 20% off your first top-up, and enterprise customers can get up to 25% off!&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://cc.anyroute.io/register?aff=CR455DSQSKEV&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/anyrouteio.png&quot; alt=&quot;AnyRoute.io&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to AnyRoute.io for sponsoring this project! AnyRoute.io is a reliable, stable, and efficient API relay platform integrating the latest Claude Code and Codex models. Transparent pricing with rates as low as 93% off official prices (just 0.7x), supports invoicing and enterprise-grade high-concurrency usage. Register via &lt;a href=&quot;https://cc.anyroute.io/register?aff=CR455DSQSKEV&quot;&gt;this link&lt;/a&gt; to get started.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://aicanapi.com/register?aff=rIEy&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/aican.jpg&quot; alt=&quot;aicanapi.com&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to aicanapi.com for sponsoring this project! Aican API provides high-performance, low-latency, high-concurrency API services for enterprises and developers. Claude Code models at up to 84% off, other models at 80% off official price. Doubao Seedance 2 real-person generation service with queue-free access for faster responses. Choose Aican API for simpler, more efficient, and more cost-effective enterprise-grade AI services. Register via &lt;a href=&quot;https://aicanapi.com/register?aff=rIEy&quot;&gt;this link&lt;/a&gt; to get started.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://pateway.ai/?ch=2qn568&amp;amp;aff=DRA4VUFS&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/patewayai.png&quot; alt=&quot;Pateway&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to Pateway for sponsoring this project! PatewayAI is a premium API relay service for serious AI developers, offering 100% official direct access to Claude and Codex models — no reverse engineering, no quality degradation. Transparent billing with token-level verification. Enterprise-grade concurrency, formal contracts and invoicing available. Register via &lt;a href=&quot;https://pateway.ai/?ch=2qn568&amp;amp;aff=DRA4VUFS&quot;&gt;this link&lt;/a&gt; to get $3 free trial credit, up to 40% off on top-ups, and referral rewards up to $150!&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://cy.10dianai.com/register?aff=3FQn&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/10dianai.png&quot; alt=&quot;10点AI&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to 10点AI for sponsoring this project! 10dian-AI Enterprise Platform is an AI API gateway for developers and enterprises, aggregating GPT, Claude, Gemini, DeepSeek and more. Optimized for production environments with stable high-concurrency operation, avoiding interface jitter and timeout issues. Affordable pricing, stable uptime, official guarantee. Register via &lt;a href=&quot;https://cy.10dianai.com/register?aff=3FQn&quot;&gt;this link&lt;/a&gt; to get ¥5 free credit!&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://code0.ai/register?aff=5cGO&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/code0.svg?sanitize=true&quot; alt=&quot;Code0&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to Code0 for sponsoring this project! Code0 is an AI model aggregation API relay service for Chinese developers, compatible with OpenAI / Anthropic / Gemini protocols. One key for all mainstream models, stable support for Claude Code, Codex, Gemini CLI, cc-connect and more. Fixed exchange rate: ¥1.5 CNY = $1 USD API credit, transparent pricing, domestic direct connection, ready to use. Register via &lt;a href=&quot;https://code0.ai/register?aff=5cGO&quot;&gt;this link&lt;/a&gt;.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://passport.compshare.cn/register?referral_code=H65IOClRGu5CM7nn5ykfad&amp;amp;ytag=GPU_YY_YX_git_cc-connect&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/youyunzhisuan.png&quot; alt=&quot;优云智算&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to 优云智算 for sponsoring this project! 优云智算 (UCloud AI Cloud Platform) provides stable and comprehensive domestic and international model APIs with just one key. Featuring high-value Coding Plan packages (monthly or per-use), plus stable official relay for overseas models. Supports Claude Code, Codex, and API calls. Enterprise features include high concurrency, 7x24 technical support, and self-service invoicing. Register via &lt;a href=&quot;https://passport.compshare.cn/register?referral_code=H65IOClRGu5CM7nn5ykfad&amp;amp;ytag=GPU_YY_YX_git_cc-connect&quot;&gt;this link&lt;/a&gt; to receive ¥5 free platform credit!&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://dragoncode.codes/register?ref=23ZELCPX&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/dragoncode.png&quot; alt=&quot;DragonCode&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to DragonCode for supporting this project. DragonCode has prepared a special benefit for cc-connect users: register via &lt;a href=&quot;https://dragoncode.codes/register?ref=23ZELCPX&quot;&gt;this link&lt;/a&gt; to get started.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://coder.visioncoder.cn&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/visioncoder.png&quot; alt=&quot;VisionCoder&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to VisionCoder for supporting this project. &lt;a href=&quot;https://coder.visioncoder.cn&quot;&gt;VisionCoder Developer Platform&lt;/a&gt; is a reliable and efficient API relay service provider, offering access to mainstream AI models such as Claude Code, Codex, and Gemini. It helps developers and teams integrate AI capabilities more easily and improve productivity. VisionCoder is also offering our users a limited-time &lt;a href=&quot;https://coder.visioncoder.cn&quot;&gt;Token Plan&lt;/a&gt; promotion: buy 1 month and get 1 month free.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://console.claudeapi.com/register?aff=GDbA&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/claudeapi.svg?sanitize=true&quot; alt=&quot;claudeapi.com&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to claudeapi.com for sponsoring this project! claudeapi is a high-quality direct Claude connection service for mid-to-high-end users. It is fully integrated with Anthropic&#39;s official first-party Keys and AWS Bedrock official channels — no reverse engineering, no intelligence degradation, no stitching. It fully preserves the official capabilities, long context, and tool-calling performance of Opus / Sonnet / Haiku. Designed specifically for Claude Code power users, Agent developers, and enterprise teams, it focuses on out-of-the-box usability and enterprise-grade stability. Invoicing and team onboarding are supported. Register via &lt;a href=&quot;https://console.claudeapi.com/register?aff=GDbA&quot;&gt;this link&lt;/a&gt;.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;150&quot;&gt;&lt;a href=&quot;https://ddshub.short.gy/ccconnect&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/assets/sponsors/ddshub.png&quot; alt=&quot;DDS Hub&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Thanks to DDS for sponsoring this project! DDS Hub is a reliable and high-performance Claude and CodeX API proxy service. We provides cost-effective domestic Claude direct acceleration services for both individual and enterprise users. We offer stable and low-latency Claude Max number pools, with full support for Claude Haiku, Opus, Sonnet, GPT 5.4 and other flagship models. Invoices are available for recharges of 1000 RMB or more. Enterprise customers can also enjoy customized grouping and dedicated technical support services. Exclusive benefit for CC connect users: Register via &lt;a href=&quot;https://ddshub.short.gy/ccconnect&quot;&gt;this link&lt;/a&gt; and enjoy an extra 10% credit on your first recharge (please contact the group admin to claim after recharging)!&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;br /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;b&gt;Control your local AI agents from any chat app. Anywhere, anytime.&lt;/b&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; cc-connect bridges AI agents running on your machine to the messaging platforms you already use.&lt;br /&gt; Code review, research, automation, data analysis — anything an AI agent can do,&lt;br /&gt; now accessible from your phone, tablet, or any device with a chat app. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/connector.png&quot; alt=&quot;CC-Connect Architecture&quot; width=&quot;90%&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;🆕 What’s New in v1.3.0&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;🌐 Web Admin UI (Recommended)&lt;/strong&gt; — Full management dashboard embedded in the binary — &lt;strong&gt;no extra dependencies&lt;/strong&gt;. Create and edit projects, manage providers, monitor sessions, edit cron jobs, and &lt;strong&gt;chat with your agent directly from the browser&lt;/strong&gt;. Supports 5 languages (en/zh/zh-TW/ja/es). We recommend managing cc-connect through the web UI instead of editing &lt;code&gt;config.toml&lt;/code&gt; by hand. Run &lt;code&gt;cc-connect web&lt;/code&gt; to configure and open the dashboard, then run &lt;code&gt;cc-connect&lt;/code&gt; to start the service.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lifecycle Event Hooks&lt;/strong&gt; — New &lt;code&gt;[[hooks]]&lt;/code&gt; config triggers shell commands or HTTP webhooks on message, session, cron, permission, and error events. Async by default, fail-open.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Skill Management&lt;/strong&gt; — New &lt;code&gt;/skills&lt;/code&gt; page with local skill browser and recommended presets.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Global Provider Management&lt;/strong&gt; — Add/edit/delete providers in the web UI; import from cc-switch config.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Personal WeChat&lt;/strong&gt; — Chat with your local agent from &lt;strong&gt;Weixin (personal)&lt;/strong&gt; via ilink long-polling; QR &lt;code&gt;weixin setup&lt;/code&gt;, CDN media, no public IP. &lt;em&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/weixin.md&quot;&gt;Setup → &lt;code&gt;docs/weixin.md&lt;/code&gt;&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Weibo DM&lt;/strong&gt; — Chat with your agent via &lt;strong&gt;Weibo private messages&lt;/strong&gt; over WebSocket; no public IP needed, text streaming supported.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Feishu Enhancements&lt;/strong&gt; — Auto-resolve &lt;code&gt;@name&lt;/code&gt; mentions, multi-level reply chain recognition, done-emoji reactions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;New Agents&lt;/strong&gt; — Kimi CLI and Pi agent support added.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🧩 Platform feature snapshot&lt;/h2&gt; 
&lt;p&gt;High-level view of what each &lt;strong&gt;built-in platform&lt;/strong&gt; can do in cc-connect.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Legend&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Symbol&lt;/th&gt; 
   &lt;th&gt;Meaning&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Works in &lt;strong&gt;stable&lt;/strong&gt; cc-connect with typical configuration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;⚠️&lt;/td&gt; 
   &lt;td&gt;Partial, needs extra config (e.g. speech / ASR), or limited by the vendor app or API&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
   &lt;td&gt;Not supported or not applicable in practice&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;† &lt;strong&gt;QQ (NapCat / OneBot)&lt;/strong&gt; — unofficial self-hosted bridge; behaviour depends on your NapCat / network setup.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Capability&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Feishu&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;DingTalk&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Telegram&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Slack&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Discord&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;LINE&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;WeCom&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Weibo&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;strong&gt;Weixin&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;(personal)&lt;/em&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;QQ†&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;QQ Bot&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Text &amp;amp; slash commands&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;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;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;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;Markdown / cards&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;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;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;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;Streaming / chunked replies&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;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;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;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;Images &amp;amp; files&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;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;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;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;Voice / STT / TTS&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;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;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;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;Private (DM)&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;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;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;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;Group / channel&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;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;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;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;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;WeCom:&lt;/strong&gt; Webhook mode needs a &lt;strong&gt;public URL&lt;/strong&gt;; long-connection / WS style setups often do not.&lt;br /&gt; &lt;strong&gt;Voice row:&lt;/strong&gt; many platforms need &lt;code&gt;[speech]&lt;/code&gt; / TTS providers enabled in &lt;code&gt;config.toml&lt;/code&gt;; values are a best-effort summary.&lt;br /&gt; Per-platform setup: &lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/#-platform-setup-guides&quot;&gt;Platform setup guides&lt;/a&gt; below.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;✨ Why cc-connect?&lt;/h2&gt; 
&lt;h3&gt;🤖 Universal Agent Support&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;10+ AI Agents&lt;/strong&gt; — Claude Code, Codex, Cursor Agent, Kimi CLI, Qoder CLI, Gemini CLI, OpenCode, iFlow CLI, Pi, Devin — plus any agent that supports the &lt;a href=&quot;https://agentclientprotocol.com/get-started/agents&quot;&gt;Agent Client Protocol (ACP)&lt;/a&gt;. Use whichever fits your workflow, or all of them at once.&lt;/p&gt; 
&lt;h3&gt;📱 Platform Flexibility&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;11 Chat Platforms&lt;/strong&gt; — Feishu, DingTalk, Slack, Telegram, Discord, WeChat Work, Weibo, LINE, QQ, QQ Bot (Official), plus &lt;strong&gt;Weixin (personal ilink)&lt;/strong&gt; for &lt;strong&gt;personal WeChat&lt;/strong&gt;. Most platforms need &lt;strong&gt;zero public IP&lt;/strong&gt;.&lt;/p&gt; 
&lt;h3&gt;🔄 Multi-Agent Orchestration&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Multi-Bot Relay&lt;/strong&gt; — Bind multiple bots in a group chat and let them communicate with each other. Ask Claude, get insights from Gemini — all in one conversation.&lt;/p&gt; 
&lt;h3&gt;🎮 Complete Chat Control&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Full Control from Chat&lt;/strong&gt; — Switch models (&lt;code&gt;/model&lt;/code&gt;), tune reasoning (&lt;code&gt;/reasoning&lt;/code&gt;), change permission modes (&lt;code&gt;/mode&lt;/code&gt;), manage sessions, all via slash commands.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Directory Switching in Chat&lt;/strong&gt; — Change where the next session starts with &lt;code&gt;/dir &amp;lt;path&amp;gt;&lt;/code&gt; (and &lt;code&gt;/cd &amp;lt;path&amp;gt;&lt;/code&gt; as a compatibility alias), plus quick history jump via &lt;code&gt;/dir &amp;lt;number&amp;gt;&lt;/code&gt; / &lt;code&gt;/dir -&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;🧠 Persistent Memory&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Agent Memory&lt;/strong&gt; — Read and write agent instruction files (&lt;code&gt;/memory&lt;/code&gt;) without touching the terminal.&lt;/p&gt; 
&lt;h3&gt;⏰ Intelligent Scheduling&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Scheduled Tasks&lt;/strong&gt; — Set up cron jobs in natural language. &lt;em&gt;&quot;Every day at 6am, summarize GitHub trending&quot;&lt;/em&gt; just works.&lt;/p&gt; 
&lt;h3&gt;🎤 Multimodal Support&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Voice &amp;amp; Images&lt;/strong&gt; — Send voice messages or screenshots; cc-connect handles STT/TTS and multimodal forwarding.&lt;/p&gt; 
&lt;h3&gt;📦 Multi-Project Architecture&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Multi-Project&lt;/strong&gt; — One process, multiple projects, each with its own agent + platform combo.&lt;/p&gt; 
&lt;h3&gt;🌍 Multilingual Interface&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;5 Languages&lt;/strong&gt; — Native support for English, Chinese (Simplified &amp;amp; Traditional), Japanese, and Spanish. Built-in i18n ensures everyone feels at home.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/screenshot/cc-connect-lark.JPG&quot; alt=&quot;飞书&quot; width=&quot;32%&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/screenshot/cc-connect-telegram.JPG&quot; alt=&quot;Telegram&quot; width=&quot;32%&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/screenshot/cc-connect-wechat.JPG&quot; alt=&quot;微信&quot; width=&quot;32%&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;em&gt;Left：Lark &amp;nbsp;|&amp;nbsp; Telegram &amp;nbsp;|&amp;nbsp; Right：Wechat&lt;/em&gt; &lt;/p&gt; 
&lt;h2&gt;🚀 Quick Start&lt;/h2&gt; 
&lt;h3&gt;🤖 Install &amp;amp; Configure via AI Agent (Recommended)&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;The easiest way&lt;/strong&gt; — Send this to Claude Code or any AI coding agent, and it will handle the entire installation and configuration for you:&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Follow https://raw.githubusercontent.com/chenhg5/cc-connect/refs/heads/main/INSTALL.md to install and configure cc-connect.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;📦 Manual Install&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Via npm:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g cc-connect
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Via Homebrew (macOS / Linux):&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install cc-connect
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Download binary from &lt;a href=&quot;https://github.com/chenhg5/cc-connect/releases&quot;&gt;GitHub Releases&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Linux amd64 - Stable
curl -L -o cc-connect https://github.com/chenhg5/cc-connect/releases/latest/download/cc-connect-linux-amd64
chmod +x cc-connect
sudo mv cc-connect /usr/local/bin/

&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Build from source (requires Go 1.22+):&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/chenhg5/cc-connect.git
cd cc-connect
make build
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;⚙️ Configure&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;💡 Tip: Use the Web UI to configure&lt;/strong&gt; — After installing, run &lt;code&gt;cc-connect web&lt;/code&gt; to configure the web admin and open the dashboard in your browser. You can visually create projects, add platforms, manage providers, and chat with your agent — no need to manually edit TOML files. &lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;cc-connect web&lt;/code&gt; only configures and opens the browser — you still need to run &lt;code&gt;cc-connect&lt;/code&gt; separately to start the service.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;If you prefer manual configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p ~/.cc-connect
cp config.example.toml ~/.cc-connect/config.toml
vim ~/.cc-connect/config.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Set &lt;code&gt;admin_from = &quot;alice,bob&quot;&lt;/code&gt; in a project to allow those user IDs to run privileged commands such as &lt;code&gt;/dir&lt;/code&gt; and &lt;code&gt;/shell&lt;/code&gt;. When a user runs &lt;code&gt;/dir reset&lt;/code&gt;, cc-connect restores the configured &lt;code&gt;work_dir&lt;/code&gt; and clears the persisted override stored under &lt;code&gt;data_dir/projects/&amp;lt;project&amp;gt;.state.json&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;▶️ Run&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./cc-connect
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;🔄 Upgrade&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# npm
npm install -g cc-connect

# Homebrew
brew upgrade cc-connect

# Binary self-update
cc-connect update           # Stable
cc-connect update --pre     # Include pre-releases
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;📊 Support Matrix&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Component&lt;/th&gt; 
   &lt;th&gt;Type&lt;/th&gt; 
   &lt;th&gt;Status&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Claude Code&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Codex (OpenAI)&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Cursor Agent&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Gemini CLI (Google)&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Qoder CLI&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;OpenCode (Crush)&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;iFlow CLI&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Kimi CLI (Moonshot)&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Pi (Cursor Background Agent)&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;ACP (Agent Client Protocol)&lt;/td&gt; 
   &lt;td&gt;✅ Any &lt;a href=&quot;https://agentclientprotocol.com/get-started/agents&quot;&gt;ACP-compatible agent&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Devin (Cognition)&lt;/td&gt; 
   &lt;td&gt;✅ Supported (via ACP)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Goose (Block)&lt;/td&gt; 
   &lt;td&gt;🔜 Planned&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Aider&lt;/td&gt; 
   &lt;td&gt;🔜 Planned&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;Feishu (Lark)&lt;/td&gt; 
   &lt;td&gt;✅ WebSocket — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;DingTalk&lt;/td&gt; 
   &lt;td&gt;✅ Stream — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;Telegram&lt;/td&gt; 
   &lt;td&gt;✅ Long Polling — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;Slack&lt;/td&gt; 
   &lt;td&gt;✅ Socket Mode — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;Discord&lt;/td&gt; 
   &lt;td&gt;✅ Gateway — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;Weibo&lt;/td&gt; 
   &lt;td&gt;✅ WebSocket — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;LINE&lt;/td&gt; 
   &lt;td&gt;✅ Webhook — public URL required&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;WeChat Work&lt;/td&gt; 
   &lt;td&gt;✅ WebSocket / Webhook&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;Weixin (personal, ilink)&lt;/td&gt; 
   &lt;td&gt;✅— HTTP long polling — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;QQ (NapCat/OneBot)&lt;/td&gt; 
   &lt;td&gt;✅ WebSocket&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Platform&lt;/td&gt; 
   &lt;td&gt;QQ Bot (Official)&lt;/td&gt; 
   &lt;td&gt;✅ WebSocket — no public IP needed&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;📖 Platform Setup Guides&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&lt;/th&gt; 
   &lt;th&gt;Guide&lt;/th&gt; 
   &lt;th&gt;Connection&lt;/th&gt; 
   &lt;th&gt;Public IP?&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Feishu (Lark)&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/feishu.md&quot;&gt;docs/feishu.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;WebSocket&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DingTalk&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/dingtalk.md&quot;&gt;docs/dingtalk.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Stream&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Telegram&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/telegram.md&quot;&gt;docs/telegram.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Long Polling&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Slack&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/slack.md&quot;&gt;docs/slack.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Socket Mode&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Discord&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/discord.md&quot;&gt;docs/discord.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Gateway&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Weibo&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/weibo.md&quot;&gt;docs/weibo.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;WebSocket&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;WeChat Work&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/wecom.md&quot;&gt;docs/wecom.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;WebSocket / Webhook&lt;/td&gt; 
   &lt;td&gt;No (WS) / Yes (Webhook)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Weixin (personal)&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/weixin.md&quot;&gt;docs/weixin.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;HTTP long polling (ilink)&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;QQ / QQ Bot&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/qq.md&quot;&gt;docs/qq.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;WebSocket&lt;/td&gt; 
   &lt;td&gt;No&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;🎯 Key Features&lt;/h2&gt; 
&lt;h3&gt;💬 Session Management&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;/new [name]       Start a new session
/list             List all sessions
/switch &amp;lt;id&amp;gt;      Switch session
/current          Show current session
/dir [path|reset] Show, switch, or reset work directory
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Project configs rotate to a fresh session automatically after long inactivity. This prevents &quot;context drift&quot; where stale chat history (failed commands, debugging noise) is repeatedly re-ingested via &lt;code&gt;--continue&lt;/code&gt; and starts to dominate the model&#39;s attention. The previous session is preserved and remains accessible via &lt;code&gt;/list&lt;/code&gt; and &lt;code&gt;/switch&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[[projects]]
reset_on_idle_mins = 30   # default when unset; set to 0 to disable
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The default is &lt;strong&gt;30 minutes&lt;/strong&gt; when unset. Set &lt;code&gt;reset_on_idle_mins = 0&lt;/code&gt; to opt out and always continue the previous session.&lt;/p&gt; 
&lt;h3&gt;🛡️ OS-User Isolation (&lt;code&gt;run_as_user&lt;/code&gt;)&lt;/h3&gt; 
&lt;p&gt;On Linux/macOS, a project can spawn its agent under a different Unix user for OS-level file-system isolation from the supervisor user that runs cc-connect. Currently supported by Claude Code.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[[projects]]
name = &quot;claude-sandboxed&quot;
run_as_user = &quot;partseeker-coder&quot;
run_as_env = [&quot;PGSSLROOTCERT&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The target user needs passwordless sudo from the supervisor, no sudo of its own, read+write on &lt;code&gt;work_dir&lt;/code&gt;, and its own &lt;code&gt;~/.claude/settings.json&lt;/code&gt; with whatever credentials the agent uses. If you authenticate via &lt;code&gt;claude.ai&lt;/code&gt; OAuth, symlink the target user&#39;s &lt;code&gt;~/.claude/.credentials.json&lt;/code&gt; to the supervisor&#39;s copy so token refresh stays in sync — see the &lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/usage.md#environment-propagation-what-moves-into-the-target-users-home&quot;&gt;environment propagation checklist&lt;/a&gt; for details. See &lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/usage.md#running-agents-as-a-different-unix-user-run_as_user&quot;&gt;&lt;code&gt;docs/usage.md&lt;/code&gt;&lt;/a&gt; for the full setup.&lt;/p&gt; 
&lt;p&gt;Before starting cc-connect, audit the setup with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cc-connect doctor user-isolation
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This runs three go/no-go preflight gates and an isolation probe that reports what the target user can and cannot read. cc-connect refuses to start if any gate fails or if the probe detects a cross-user leak.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;🔐 Permission Modes&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;/mode             Show available modes
/mode yolo        # Auto-approve all tools
/mode default     # Ask for each tool
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;🔄 Provider Management&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;/provider list              List providers
/provider switch &amp;lt;name&amp;gt;     Switch API provider at runtime
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;🤖 Model Selection&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;/model                      List available models (format: alias - model)
/model switch &amp;lt;alias&amp;gt;       Switch to model by alias
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;📂 Work Directory&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;/dir                         Show current work directory and history
/dir &amp;lt;path&amp;gt;                  Switch to a path (relative or absolute)
/dir &amp;lt;number&amp;gt;                Switch from history
/dir -                       Switch to previous directory
/cd &amp;lt;path&amp;gt;                   Compatibility alias for /dir &amp;lt;path&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;⏰ Scheduled Tasks&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/cron add 0 6 * * * Summarize GitHub trending
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;📎 Agent Attachment Send-Back&lt;/h3&gt; 
&lt;p&gt;When an agent generates a local screenshot, chart, PDF, bundle, or other file, it can send that attachment back to the current chat.&lt;/p&gt; 
&lt;p&gt;First release supports:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Feishu&lt;/li&gt; 
 &lt;li&gt;Telegram&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If your agent does not natively inject the system prompt, run this once in chat after upgrading:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/bind setup
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;or:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/cron setup
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This refreshes the cc-connect instructions in the project memory file so the agent knows how to send attachments back.&lt;/p&gt; 
&lt;p&gt;You can control this feature globally in &lt;code&gt;config.toml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;attachment_send = &quot;on&quot;  # default: &quot;on&quot;; set to &quot;off&quot; to block image/file send-back
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This switch is independent from the agent&#39;s &lt;code&gt;/mode&lt;/code&gt;. It only controls &lt;code&gt;cc-connect send --image/--file&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Examples:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cc-connect send --image /absolute/path/to/chart.png
cc-connect send --file /absolute/path/to/report.pdf
cc-connect send --file /absolute/path/to/report.pdf --image /absolute/path/to/chart.png
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Notes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Absolute paths are the safest option.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--image&lt;/code&gt; and &lt;code&gt;--file&lt;/code&gt; can both be repeated.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;attachment_send = &quot;off&quot;&lt;/code&gt; disables only attachment send-back; ordinary text replies still work.&lt;/li&gt; 
 &lt;li&gt;This command is for generated attachments, not ordinary text replies.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;📖 &lt;strong&gt;Full documentation:&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/usage.md&quot;&gt;docs/usage.md&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;📚 Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/usage.md&quot;&gt;Usage Guide&lt;/a&gt; — Complete feature documentation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/INSTALL.md&quot;&gt;INSTALL.md&lt;/a&gt; — AI-agent-friendly installation guide&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/config.example.toml&quot;&gt;config.example.toml&lt;/a&gt; — Configuration template&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; — How to report issues and contribute pull requests&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;👥 Community&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/kHpwgaM4kq&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://t.me/+odGNDhCjbjdmMmZl&quot;&gt;Telegram&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;☕ Support the Project&lt;/h2&gt; 
&lt;p&gt;If cc-connect has been helpful to you, consider buying us a coffee! Your support helps us:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🛠️ Maintain and improve the project&lt;/li&gt; 
 &lt;li&gt;📚 Write better documentation and tutorials&lt;/li&gt; 
 &lt;li&gt;🐛 Fix bugs and add new features faster&lt;/li&gt; 
 &lt;li&gt;☕ Keep the developers caffeinated&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;How to Donate&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Buy Me a Coffee&lt;/strong&gt;: &lt;a href=&quot;https://buymeacoffee.com/cg33&quot;&gt;https://buymeacoffee.com/cg33&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;WeChat Pay / Alipay&lt;/strong&gt;:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;WeChat Pay&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Alipay&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/wechatpay.jpg&quot; alt=&quot;WeChat Pay&quot; width=&quot;150&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenhg5/cc-connect/main/docs/images/alipay.jpg&quot; alt=&quot;Alipay&quot; width=&quot;150&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Thank You, Donors! 🎉&lt;/h3&gt; 
&lt;p&gt;We&#39;re grateful to everyone who has supported this project. Leave your GitHub username in the donation message if you&#39;d like to be recognized here!&lt;/p&gt; 
&lt;!-- Donors will be listed below --&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Avatar&lt;/th&gt; 
   &lt;th&gt;GitHub Username&lt;/th&gt; 
   &lt;th&gt;Date&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/1762560?v=4&quot; width=&quot;40&quot; height=&quot;40&quot; style=&quot;border-radius: 50%;&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/thx0701&quot;&gt;@thx0701&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;2026-04-29&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;🤝 Commercial Cooperation&lt;/h2&gt; 
&lt;p&gt;We accept the following commercial collaborations:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Enterprise Customization&lt;/strong&gt;: Custom deployment for internal AI tooling (Feishu, DingTalk, WeChat Work, Slack, etc.)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Technical Consulting&lt;/strong&gt;: AI agent integration and architecture design&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Outsourcing Projects&lt;/strong&gt;: AI-related system development&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Contact&lt;/strong&gt;: &lt;strong&gt;Email&lt;/strong&gt;: &lt;a href=&quot;mailto:chg80333@gmail.com&quot;&gt;chg80333@gmail.com&lt;/a&gt; | &lt;strong&gt;WeChat&lt;/strong&gt;: mongorz | &lt;a href=&quot;https://t.me/+odGNDhCjbjdmMmZl&quot;&gt;Telegram&lt;/a&gt; | &lt;a href=&quot;https://discord.gg/kHpwgaM4kq&quot;&gt;Discord&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;🙏 Contributors&lt;/h2&gt; 
&lt;a href=&quot;https://github.com/chenhg5/cc-connect/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=chenhg5/cc-connect&amp;amp;v=20250313&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;⭐ Star History&lt;/h2&gt; 
&lt;a href=&quot;https://www.star-history.com/#chenhg5/cc-connect&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=chenhg5/cc-connect&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=chenhg5/cc-connect&amp;amp;type=Date&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=chenhg5/cc-connect&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;MIT License&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;sub&gt;Built with ❤️ by the cc-connect community&lt;/sub&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2da8addfcc6c140905c4bed9ca2b32429071e1a9fd2409b68b5804e51b4aed83/chenhg5/cc-connect" medium="image" />
      
    </item>
    
    <item>
      <title>apernet/hysteria</title>
      <link>https://github.com/apernet/hysteria</link>
      <description>&lt;p&gt;Hysteria is a powerful, lightning fast and censorship resistant proxy.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;&lt;img src=&quot;https://raw.githubusercontent.com/apernet/hysteria/master/logo.svg?sanitize=true&quot; alt=&quot;Hysteria 2&quot; /&gt;&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/apernet/hysteria/master/LICENSE.md&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://github.com/apernet/hysteria/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/apernet/hysteria?style=flat-square&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/hysteria_github&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/chat-Telegram-blue?style=flat-square&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/apernet/hysteria/discussions&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/discussions/apernet/hysteria?style=flat-square&quot; alt=&quot;Discussions&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2 style=&quot;text-align: center;&quot;&gt;Hysteria is a powerful, lightning fast and censorship resistant proxy.&lt;/h2&gt; 
&lt;h3&gt;&lt;a href=&quot;https://v2.hysteria.network/&quot;&gt;Get Started&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;&lt;a href=&quot;https://v2.hysteria.network/zh/&quot;&gt;中文文档&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;&lt;a href=&quot;https://v1.hysteria.network/&quot;&gt;Hysteria 1.x (legacy)&lt;/a&gt;&lt;/h3&gt; 
&lt;hr /&gt; 
&lt;div class=&quot;feature-grid&quot;&gt; 
 &lt;div&gt; 
  &lt;h3&gt;🛠️ Jack of all trades&lt;/h3&gt; 
  &lt;p&gt;Wide range of modes including SOCKS5, HTTP Proxy, TCP/UDP Forwarding, Linux TProxy, TUN - with more features being added constantly.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;h3&gt;⚡ Blazing fast&lt;/h3&gt; 
  &lt;p&gt;Powered by a customized QUIC protocol, Hysteria is designed to deliver unparalleled performance over unreliable and lossy networks.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;h3&gt;✊ Censorship resistant&lt;/h3&gt; 
  &lt;p&gt;The protocol masquerades as standard HTTP/3 traffic, making it very difficult for censors to detect and block without widespread collateral damage.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;h3&gt;💻 Cross-platform&lt;/h3&gt; 
  &lt;p&gt;We have builds for every major platform and architecture. Deploy anywhere &amp;amp; use everywhere. Not to mention the long list of 3rd party apps.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;h3&gt;🔗 Easy integration&lt;/h3&gt; 
  &lt;p&gt;With built-in support for custom authentication, traffic statistics &amp;amp; access control, Hysteria is easy to integrate into your infrastructure.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;h3&gt;🤗 Chill and supportive&lt;/h3&gt; 
  &lt;p&gt;We have well-documented specifications and code for developers to contribute and/or build their own apps. And a helpful community, too.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;strong&gt;If you find Hysteria useful, consider giving it a ⭐️!&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://star-history.com/#apernet/hysteria&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=apernet/hysteria&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/e7b7457c0c9ca022fa2ebb7a53e9ea2f79e197c2fae97a4054b878c34d969d7a/apernet/hysteria" medium="image" />
      
    </item>
    
    <item>
      <title>gitleaks/gitleaks</title>
      <link>https://github.com/gitleaks/gitleaks</link>
      <description>&lt;p&gt;Find secrets with Gitleaks 🔑&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Gitleaks&lt;/h1&gt; 
&lt;pre&gt;&lt;code&gt;┌─○───┐
│ │╲  │
│ │ ○ │
│ ○ ░ │
└─░───┘
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/gitleaks/gitleaks/actions/workflows/test.yml&quot;&gt;&lt;img src=&quot;https://github.com/gitleaks/gitleaks/actions/workflows/test.yml/badge.svg?sanitize=true&quot; alt=&quot;GitHub Action Test&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/zricethezav/gitleaks&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/zricethezav/gitleaks.svg?sanitize=true&quot; alt=&quot;Docker Hub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/gitleaks/gitleaks-action&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/protected%20by-gitleaks-blue&quot; alt=&quot;Gitleaks Action&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/github.com/zricethezav/gitleaks/v8&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/gitleaks/gitleaks/v8?status&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/gitleaks/gitleaks/v8&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/gitleaks/gitleaks/v8&quot; alt=&quot;GoReportCard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/gitleaks/gitleaks/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/gitleaks/gitleaks.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Gitleaks is a tool for &lt;strong&gt;detecting&lt;/strong&gt; secrets like passwords, API keys, and tokens in git repos, files, and whatever else you wanna throw at it via &lt;code&gt;stdin&lt;/code&gt;. If you wanna learn more about how the detection engine works check out this blog: &lt;a href=&quot;https://lookingatcomputer.substack.com/p/regex-is-almost-all-you-need&quot;&gt;Regex is (almost) all you need&lt;/a&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;➜  ~/code(master) gitleaks git -v

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks


Finding:     &quot;export BUNDLE_ENTERPRISE__CONTRIBSYS__COM=cafebabe:deadbeef&quot;,
Secret:      cafebabe:deadbeef
RuleID:      sidekiq-secret
Entropy:     2.609850
File:        cmd/generate/config/rules/sidekiq.go
Line:        23
Commit:      cd5226711335c68be1e720b318b7bc3135a30eb2
Author:      John
Email:       john@users.noreply.github.com
Date:        2022-08-03T12:31:40Z
Fingerprint: cd5226711335c68be1e720b318b7bc3135a30eb2:cmd/generate/config/rules/sidekiq.go:sidekiq-secret:23
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;Gitleaks can be installed using Homebrew, Docker, or Go. Gitleaks is also available in binary form for many popular platforms and OS types on the &lt;a href=&quot;https://github.com/gitleaks/gitleaks/releases&quot;&gt;releases page&lt;/a&gt;. In addition, Gitleaks can be implemented as a pre-commit hook directly in your repo or as a GitHub action using &lt;a href=&quot;https://github.com/gitleaks/gitleaks-action&quot;&gt;Gitleaks-Action&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Installing&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# MacOS
brew install gitleaks

# Docker (DockerHub)
docker pull zricethezav/gitleaks:latest
docker run -v ${path_to_host_folder_to_scan}:/path zricethezav/gitleaks:latest [COMMAND] [OPTIONS] [SOURCE_PATH]

# Docker (ghcr.io)
docker pull ghcr.io/gitleaks/gitleaks:latest
docker run -v ${path_to_host_folder_to_scan}:/path ghcr.io/gitleaks/gitleaks:latest [COMMAND] [OPTIONS] [SOURCE_PATH]

# From Source (make sure `go` is installed)
git clone https://github.com/gitleaks/gitleaks.git
cd gitleaks
make build
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Pre-Commit&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Install pre-commit from &lt;a href=&quot;https://pre-commit.com/#install&quot;&gt;https://pre-commit.com/#install&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Create a &lt;code&gt;.pre-commit-config.yaml&lt;/code&gt; file at the root of your repository with the following content:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.24.2
    hooks:
      - id: gitleaks
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;for a &lt;a href=&quot;https://github.com/gitleaks/gitleaks/releases&quot;&gt;native execution of gitleaks&lt;/a&gt; or use the &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/.pre-commit-hooks.yaml&quot;&gt;&lt;code&gt;gitleaks-docker&lt;/code&gt; pre-commit ID&lt;/a&gt; for executing gitleaks using the &lt;a href=&quot;https://raw.githubusercontent.com/gitleaks/gitleaks/master/#docker&quot;&gt;official Docker images&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Auto-update the config to the latest repos&#39; versions by executing &lt;code&gt;pre-commit autoupdate&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install with &lt;code&gt;pre-commit install&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Now you&#39;re all set!&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code&gt;➜ git commit -m &quot;this commit contains a secret&quot;
Detect hardcoded secrets.................................................Failed
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note: to disable the gitleaks pre-commit hook you can prepend &lt;code&gt;SKIP=gitleaks&lt;/code&gt; to the commit command and it will skip running gitleaks&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;➜ SKIP=gitleaks git commit -m &quot;skip gitleaks check&quot;
Detect hardcoded secrets................................................Skipped
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;Gitleaks scans code, past or present, for secrets

Usage:
  gitleaks [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  dir         scan directories or files for secrets
  git         scan git repositories for secrets
  help        Help about any command
  stdin       detect secrets from stdin
  version     display gitleaks version

Flags:
  -b, --baseline-path string          path to baseline with issues that can be ignored
  -c, --config string                 config file path
                                      order of precedence:
                                      1. --config/-c
                                      2. env var GITLEAKS_CONFIG
                                      3. env var GITLEAKS_CONFIG_TOML with the file content
                                      4. (target path)/.gitleaks.toml
                                      If none of the four options are used, then gitleaks will use the default config
      --diagnostics string            enable diagnostics (http OR comma-separated list: cpu,mem,trace). cpu=CPU prof, mem=memory prof, trace=exec tracing, http=serve via net/http/pprof
      --diagnostics-dir string        directory to store diagnostics output files when not using http mode (defaults to current directory)
      --enable-rule strings           only enable specific rules by id
      --exit-code int                 exit code when leaks have been encountered (default 1)
  -i, --gitleaks-ignore-path string   path to .gitleaksignore file or folder containing one (default &quot;.&quot;)
  -h, --help                          help for gitleaks
      --ignore-gitleaks-allow         ignore gitleaks:allow comments
  -l, --log-level string              log level (trace, debug, info, warn, error, fatal) (default &quot;info&quot;)
      --max-archive-depth int         allow scanning into nested archives up to this depth (default &quot;0&quot;, no archive traversal is done)
      --max-decode-depth int          allow recursive decoding up to this depth (default &quot;0&quot;, no decoding is done)
      --max-target-megabytes int      files larger than this will be skipped
      --no-banner                     suppress banner
      --no-color                      turn off color for verbose output
      --redact uint[=100]             redact secrets from logs and stdout. To redact only parts of the secret just apply a percent value from 0..100. For example --redact=20 (default 100%)
  -f, --report-format string          output format (json, csv, junit, sarif, template)
  -r, --report-path string            report file
      --report-template string        template file used to generate the report (implies --report-format=template)
      --timeout int                   set a timeout for gitleaks commands in seconds (default &quot;0&quot;, no timeout is set)
  -v, --verbose                       show verbose output from scan
      --version                       version for gitleaks

Use &quot;gitleaks [command] --help&quot; for more information about a command.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Commands&lt;/h3&gt; 
&lt;p&gt;⚠️ v8.19.0 introduced a change that deprecated &lt;code&gt;detect&lt;/code&gt; and &lt;code&gt;protect&lt;/code&gt;. Those commands are still available but are hidden in the &lt;code&gt;--help&lt;/code&gt; menu. Take a look at this &lt;a href=&quot;https://gist.github.com/zricethezav/b325bb93ebf41b9c0b0507acf12810d2&quot;&gt;gist&lt;/a&gt; for easy command translations. If you find v8.19.0 broke an existing command (&lt;code&gt;detect&lt;/code&gt;/&lt;code&gt;protect&lt;/code&gt;), please open an issue.&lt;/p&gt; 
&lt;p&gt;There are three scanning modes: &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;dir&lt;/code&gt;, and &lt;code&gt;stdin&lt;/code&gt;.&lt;/p&gt; 
&lt;h4&gt;Git&lt;/h4&gt; 
&lt;p&gt;The &lt;code&gt;git&lt;/code&gt; command lets you scan local git repos. Under the hood, gitleaks uses the &lt;code&gt;git log -p&lt;/code&gt; command to scan patches. You can configure the behavior of &lt;code&gt;git log -p&lt;/code&gt; with the &lt;code&gt;log-opts&lt;/code&gt; option. For example, if you wanted to run gitleaks on a range of commits you could use the following command: &lt;code&gt;gitleaks git -v --log-opts=&quot;--all commitA..commitB&quot; path_to_repo&lt;/code&gt;. See the &lt;a href=&quot;https://git-scm.com/docs/git-log&quot;&gt;git log&lt;/a&gt; documentation for more information. If there is no target specified as a positional argument, then gitleaks will attempt to scan the current working directory as a git repo.&lt;/p&gt; 
&lt;h4&gt;Dir&lt;/h4&gt; 
&lt;p&gt;The &lt;code&gt;dir&lt;/code&gt; (aliases include &lt;code&gt;files&lt;/code&gt;, &lt;code&gt;directory&lt;/code&gt;) command lets you scan directories and files. Example: &lt;code&gt;gitleaks dir -v path_to_directory_or_file&lt;/code&gt;. If there is no target specified as a positional argument, then gitleaks will scan the current working directory.&lt;/p&gt; 
&lt;h4&gt;Stdin&lt;/h4&gt; 
&lt;p&gt;You can also stream data to gitleaks with the &lt;code&gt;stdin&lt;/code&gt; command. Example: &lt;code&gt;cat some_file | gitleaks -v stdin&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Creating a baseline&lt;/h3&gt; 
&lt;p&gt;When scanning large repositories or repositories with a long history, it can be convenient to use a baseline. When using a baseline, gitleaks will ignore any old findings that are present in the baseline. A baseline can be any gitleaks report. To create a gitleaks report, run gitleaks with the &lt;code&gt;--report-path&lt;/code&gt; parameter.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;gitleaks git --report-path gitleaks-report.json # This will save the report in a file called gitleaks-report.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Once as baseline is created it can be applied when running the detect command again:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;gitleaks git --baseline-path gitleaks-report.json --report-path findings.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After running the detect command with the --baseline-path parameter, report output (findings.json) will only contain new issues.&lt;/p&gt; 
&lt;h2&gt;Pre-Commit hook&lt;/h2&gt; 
&lt;p&gt;You can run Gitleaks as a pre-commit hook by copying the example &lt;code&gt;pre-commit.py&lt;/code&gt; script into your &lt;code&gt;.git/hooks/&lt;/code&gt; directory.&lt;/p&gt; 
&lt;h2&gt;Load Configuration&lt;/h2&gt; 
&lt;p&gt;The order of precedence is:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;code&gt;--config/-c&lt;/code&gt; option:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gitleaks git --config /home/dev/customgitleaks.toml .
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Environment variable &lt;code&gt;GITLEAKS_CONFIG&lt;/code&gt; with the file path:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export GITLEAKS_CONFIG=&quot;/home/dev/customgitleaks.toml&quot;
gitleaks git .
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Environment variable &lt;code&gt;GITLEAKS_CONFIG_TOML&lt;/code&gt; with the file content:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export GITLEAKS_CONFIG_TOML=`cat customgitleaks.toml`
gitleaks git .
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;A &lt;code&gt;.gitleaks.toml&lt;/code&gt; file within the target path:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gitleaks git .
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;If none of the four options are used, then gitleaks will use the default config.&lt;/p&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;p&gt;Gitleaks offers a configuration format you can follow to write your own secret detection rules:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# Title for the gitleaks configuration file.
title = &quot;Custom Gitleaks configuration&quot;

# You have basically two options for your custom configuration:
#
# 1. define your own configuration, default rules do not apply
#
#    use e.g., the default configuration as starting point:
#    https://github.com/gitleaks/gitleaks/blob/master/config/gitleaks.toml
#
# 2. extend a configuration, the rules are overwritten or extended
#
#    When you extend a configuration the extended rules take precedence over the
#    default rules. I.e., if there are duplicate rules in both the extended
#    configuration and the default configuration the extended rules or
#    attributes of them will override the default rules.
#    Another thing to know with extending configurations is you can chain
#    together multiple configuration files to a depth of 2. Allowlist arrays are
#    appended and can contain duplicates.

# useDefault and path can NOT be used at the same time. Choose one.
[extend]
# useDefault will extend the default gitleaks config built in to the binary
# the latest version is located at:
# https://github.com/gitleaks/gitleaks/blob/master/config/gitleaks.toml
useDefault = true
# or you can provide a path to a configuration to extend from.
# The path is relative to where gitleaks was invoked,
# not the location of the base config.
# path = &quot;common_config.toml&quot;
# If there are any rules you don&#39;t want to inherit, they can be specified here.
disabledRules = [ &quot;generic-api-key&quot;]

# An array of tables that contain information that define instructions
# on how to detect secrets
[[rules]]
# Unique identifier for this rule
id = &quot;awesome-rule-1&quot;

# Short human-readable description of the rule.
description = &quot;awesome rule 1&quot;

# Golang regular expression used to detect secrets. Note Golang&#39;s regex engine
# does not support lookaheads.
regex = &#39;&#39;&#39;one-go-style-regex-for-this-rule&#39;&#39;&#39;

# Int used to extract secret from regex match and used as the group that will have
# its entropy checked if `entropy` is set.
secretGroup = 3

# Float representing the minimum shannon entropy a regex group must have to be considered a secret.
entropy = 3.5

# Golang regular expression used to match paths. This can be used as a standalone rule or it can be used
# in conjunction with a valid `regex` entry.
path = &#39;&#39;&#39;a-file-path-regex&#39;&#39;&#39;

# Keywords are used for pre-regex check filtering. Rules that contain
# keywords will perform a quick string compare check to make sure the
# keyword(s) are in the content being scanned. Ideally these values should
# either be part of the identiifer or unique strings specific to the rule&#39;s regex
# (introduced in v8.6.0)
keywords = [
  &quot;auth&quot;,
  &quot;password&quot;,
  &quot;token&quot;,
]

# Array of strings used for metadata and reporting purposes.
tags = [&quot;tag&quot;,&quot;another tag&quot;]

    # ⚠️ In v8.21.0 `[rules.allowlist]` was replaced with `[[rules.allowlists]]`.
    # This change was backwards-compatible: instances of `[rules.allowlist]` still  work.
    #
    # You can define multiple allowlists for a rule to reduce false positives.
    # A finding will be ignored if _ANY_ `[[rules.allowlists]]` matches.
    [[rules.allowlists]]
    description = &quot;ignore commit A&quot;
    # When multiple criteria are defined the default condition is &quot;OR&quot;.
    # e.g., this can match on |commits| OR |paths| OR |stopwords|.
    condition = &quot;OR&quot;
    commits = [ &quot;commit-A&quot;, &quot;commit-B&quot;]
    paths = [
      &#39;&#39;&#39;go\.mod&#39;&#39;&#39;,
      &#39;&#39;&#39;go\.sum&#39;&#39;&#39;
    ]
    # note: stopwords targets the extracted secret, not the entire regex match
    # like &#39;regexes&#39; does. (stopwords introduced in 8.8.0)
    stopwords = [
      &#39;&#39;&#39;client&#39;&#39;&#39;,
      &#39;&#39;&#39;endpoint&#39;&#39;&#39;,
    ]

    [[rules.allowlists]]
    # The &quot;AND&quot; condition can be used to make sure all criteria match.
    # e.g., this matches if |regexes| AND |paths| are satisfied.
    condition = &quot;AND&quot;
    # note: |regexes| defaults to check the _Secret_ in the finding.
    # Acceptable values for |regexTarget| are &quot;secret&quot; (default), &quot;match&quot;, and &quot;line&quot;.
    regexTarget = &quot;match&quot;
    regexes = [ &#39;&#39;&#39;(?i)parseur[il]&#39;&#39;&#39; ]
    paths = [ &#39;&#39;&#39;package-lock\.json&#39;&#39;&#39; ]

# You can extend a particular rule from the default config. e.g., gitlab-pat
# if you have defined a custom token prefix on your GitLab instance
[[rules]]
id = &quot;gitlab-pat&quot;
# all the other attributes from the default rule are inherited

    [[rules.allowlists]]
    regexTarget = &quot;line&quot;
    regexes = [ &#39;&#39;&#39;MY-glpat-&#39;&#39;&#39; ]


# ⚠️ In v8.25.0 `[allowlist]` was replaced with `[[allowlists]]`.
#
# Global allowlists have a higher order of precedence than rule-specific allowlists.
# If a commit listed in the `commits` field below is encountered then that commit will be skipped and no
# secrets will be detected for said commit. The same logic applies for regexes and paths.
[[allowlists]]
description = &quot;global allow list&quot;
commits = [ &quot;commit-A&quot;, &quot;commit-B&quot;, &quot;commit-C&quot;]
paths = [
  &#39;&#39;&#39;gitleaks\.toml&#39;&#39;&#39;,
  &#39;&#39;&#39;(.*?)(jpg|gif|doc)&#39;&#39;&#39;
]
# note: (global) regexTarget defaults to check the _Secret_ in the finding.
# Acceptable values for regexTarget are &quot;match&quot; and &quot;line&quot;
regexTarget = &quot;match&quot;
regexes = [
  &#39;&#39;&#39;219-09-9999&#39;&#39;&#39;,
  &#39;&#39;&#39;078-05-1120&#39;&#39;&#39;,
  &#39;&#39;&#39;(9[0-9]{2}|666)-\d{2}-\d{4}&#39;&#39;&#39;,
]
# note: stopwords targets the extracted secret, not the entire regex match
# like &#39;regexes&#39; does. (stopwords introduced in 8.8.0)
stopwords = [
  &#39;&#39;&#39;client&#39;&#39;&#39;,
  &#39;&#39;&#39;endpoint&#39;&#39;&#39;,
]

# ⚠️ In v8.25.0, `[[allowlists]]` have a new field called |targetRules|.
#
# Common allowlists can be defined once and assigned to multiple rules using |targetRules|.
# This will only run on the specified rules, not globally.
[[allowlists]]
targetRules = [&quot;awesome-rule-1&quot;, &quot;awesome-rule-2&quot;]
description = &quot;Our test assets trigger false-positives in a couple rules.&quot;
paths = [&#39;&#39;&#39;tests/expected/._\.json$&#39;&#39;&#39;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Refer to the default &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/config/gitleaks.toml&quot;&gt;gitleaks config&lt;/a&gt; for examples or follow the &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/CONTRIBUTING.md&quot;&gt;contributing guidelines&lt;/a&gt; if you would like to contribute to the default configuration. Additionally, you can check out &lt;a href=&quot;https://blog.gitleaks.io/stop-leaking-secrets-configuration-2-3-aeed293b1fbf&quot;&gt;this gitleaks blog post&lt;/a&gt; which covers advanced configuration setups.&lt;/p&gt; 
&lt;h3&gt;Additional Configuration&lt;/h3&gt; 
&lt;h4&gt;Composite Rules (Multi-part or &lt;code&gt;required&lt;/code&gt; Rules)&lt;/h4&gt; 
&lt;p&gt;In v8.28.0 Gitleaks introduced composite rules, which are made up of a single &quot;primary&quot; rule and one or more auxiliary or &lt;code&gt;required&lt;/code&gt; rules. To create a composite rule, add a &lt;code&gt;[[rules.required]]&lt;/code&gt; table to the primary rule specifying an &lt;code&gt;id&lt;/code&gt; and optionally &lt;code&gt;withinLines&lt;/code&gt; and/or &lt;code&gt;withinColumns&lt;/code&gt; proximity constraints. A fragment is a chunk of content that Gitleaks processes at once (typically a file, part of a file, or git diff), and proximity matching instructs the primary rule to only report a finding if the auxiliary &lt;code&gt;required&lt;/code&gt; rules also find matches within the specified area of the fragment.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Proximity matching:&lt;/strong&gt; Using the &lt;code&gt;withinLines&lt;/code&gt; and &lt;code&gt;withinColumns&lt;/code&gt; fields instructs the primary rule to only report a finding if the auxiliary &lt;code&gt;required&lt;/code&gt; rules also find matches within the specified proximity. You can set:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;withinLines: N&lt;/code&gt;&lt;/strong&gt; - required findings must be within N lines (vertically)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;withinColumns: N&lt;/code&gt;&lt;/strong&gt; - required findings must be within N characters (horizontally)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Both&lt;/strong&gt; - creates a rectangular search area (both constraints must be satisfied)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Neither&lt;/strong&gt; - fragment-level matching (required findings can be anywhere in the same fragment)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Here are diagrams illustrating each proximity behavior:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;p = primary captured secret
a = auxiliary (required) captured secret
fragment = section of data gitleaks is looking at


    *Fragment-level proximity*
    Any required finding in the fragment
          ┌────────┐
   ┌──────┤fragment├─────┐
   │      └──────┬─┤     │ ┌───────┐
   │             │a│◀────┼─│✓ MATCH│
   │          ┌─┐└─┘     │ └───────┘
   │┌─┐       │p│        │
   ││a│    ┌─┐└─┘        │ ┌───────┐
   │└─┘    │a│◀──────────┼─│✓ MATCH│
   └─▲─────┴─┴───────────┘ └───────┘
     │    ┌───────┐
     └────│✓ MATCH│
          └───────┘


   *Column bounded proximity*
   `withinColumns = 3`
          ┌────────┐
   ┌────┬─┤fragment├─┬───┐
   │      └──────┬─┤     │ ┌───────────┐
   │    │        │a│◀┼───┼─│+1C ✓ MATCH│
   │          ┌─┐└─┘     │ └───────────┘
   │┌─┐ │     │p│    │   │
┌──▶│a│  ┌─┐  └─┘        │ ┌───────────┐
│  │└─┘ ││a│◀────────┼───┼─│-2C ✓ MATCH│
│  │       ┘             │ └───────────┘
│  └── -3C ───0C─── +3C ─┘
│  ┌─────────┐
│  │ -4C ✗ NO│
└──│  MATCH  │
   └─────────┘


   *Line bounded proximity*
   `withinLines = 4`
         ┌────────┐
   ┌─────┤fragment├─────┐
  +4L─ ─ ┴────────┘─ ─ ─│
   │                    │
   │              ┌─┐   │ ┌────────────┐
   │         ┌─┐  │a│◀──┼─│+1L ✓ MATCH │
   0L  ┌─┐   │p│  └─┘   │ ├────────────┤
   │   │a│◀──┴─┴────────┼─│-1L ✓ MATCH │
   │   └─┘              │ └────────────┘
   │                    │ ┌─────────┐
  -4L─ ─ ─ ─ ─ ─ ─ ─┌─┐─│ │-5L ✗ NO │
   │                │a│◀┼─│  MATCH  │
   └────────────────┴─┴─┘ └─────────┘


   *Line and column bounded proximity*
   `withinLines = 4`
   `withinColumns = 3`
         ┌────────┐
   ┌─────┤fragment├─────┐
  +4L   ┌└────────┴ ┐   │
   │            ┌─┐     │ ┌───────────────┐
   │    │       │a│◀┼───┼─│+2L/+1C ✓ MATCH│
   │         ┌─┐└─┘     │ └───────────────┘
   0L   │    │p│    │   │
   │         └─┘        │
   │    │           │   │ ┌────────────┐
  -4L    ─ ─ ─ ─ ─ ─┌─┐ │ │-5L/+3C ✗ NO│
   │                │a│◀┼─│   MATCH    │
   └───-3C────0L───+3C┴─┘ └────────────┘
&lt;/code&gt;&lt;/pre&gt; 
&lt;details&gt;
 &lt;summary&gt;Some final quick thoughts on composite rules.&lt;/summary&gt;This is an experimental feature! It&#39;s subject to change so don&#39;t go sellin&#39; a new B2B SaaS feature built ontop of this feature. Scan type (git vs dir) based context is interesting. I&#39;m monitoring the situation. Composite rules might not be super useful for git scans because gitleaks only looks at additions in the git history. It could be useful to scan non-additions in git history for `required` rules. Oh, right this is a readme, I&#39;ll shut up now.
&lt;/details&gt; 
&lt;h4&gt;gitleaks:allow&lt;/h4&gt; 
&lt;p&gt;If you are knowingly committing a test secret that gitleaks will catch you can add a &lt;code&gt;gitleaks:allow&lt;/code&gt; comment to that line which will instruct gitleaks to ignore that secret. Ex:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;class CustomClass:
    discord_client_secret = &#39;8dyfuiRyq=vVc3RRr_edRk-fK__JItpZ&#39;  #gitleaks:allow

&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;.gitleaksignore&lt;/h4&gt; 
&lt;p&gt;You can ignore specific findings by creating a &lt;code&gt;.gitleaksignore&lt;/code&gt; file at the root of your repo. In release v8.10.0 Gitleaks added a &lt;code&gt;Fingerprint&lt;/code&gt; value to the Gitleaks report. Each leak, or finding, has a Fingerprint that uniquely identifies a secret. Add this fingerprint to the &lt;code&gt;.gitleaksignore&lt;/code&gt; file to ignore that specific secret. See Gitleaks&#39; &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/.gitleaksignore&quot;&gt;.gitleaksignore&lt;/a&gt; for an example. Note: this feature is experimental and is subject to change in the future.&lt;/p&gt; 
&lt;h4&gt;Decoding&lt;/h4&gt; 
&lt;p&gt;Sometimes secrets are encoded in a way that can make them difficult to find with just regex. Now you can tell gitleaks to automatically find and decode encoded text. The flag &lt;code&gt;--max-decode-depth&lt;/code&gt; enables this feature (the default value &quot;0&quot; means the feature is disabled by default).&lt;/p&gt; 
&lt;p&gt;Recursive decoding is supported since decoded text can also contain encoded text. The flag &lt;code&gt;--max-decode-depth&lt;/code&gt; sets the recursion limit. Recursion stops when there are no new segments of encoded text to decode, so setting a really high max depth doesn&#39;t mean it will make that many passes. It will only make as many as it needs to decode the text. Overall, decoding only minimally increases scan times.&lt;/p&gt; 
&lt;p&gt;The findings for encoded text differ from normal findings in the following ways:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;The location points the bounds of the encoded text 
  &lt;ul&gt; 
   &lt;li&gt;If the rule matches outside the encoded text, the bounds are adjusted to include that as well&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;The match and secret contain the decoded value&lt;/li&gt; 
 &lt;li&gt;Two tags are added &lt;code&gt;decoded:&amp;lt;encoding&amp;gt;&lt;/code&gt; and &lt;code&gt;decode-depth:&amp;lt;depth&amp;gt;&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Currently supported encodings:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;percent&lt;/strong&gt; - Any printable ASCII percent encoded values&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;hex&lt;/strong&gt; - Any printable ASCII hex encoded values &amp;gt;= 32 characters&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;base64&lt;/strong&gt; - Any printable ASCII base64 encoded values &amp;gt;= 16 characters&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Archive Scanning&lt;/h4&gt; 
&lt;p&gt;Sometimes secrets are packaged within archive files like zip files or tarballs, making them difficult to discover. Now you can tell gitleaks to automatically extract and scan the contents of archives. The flag &lt;code&gt;--max-archive-depth&lt;/code&gt; enables this feature for both &lt;code&gt;dir&lt;/code&gt; and &lt;code&gt;git&lt;/code&gt; scan types. The default value of &quot;0&quot; means this feature is disabled by default.&lt;/p&gt; 
&lt;p&gt;Recursive scanning is supported since archives can also contain other archives. The &lt;code&gt;--max-archive-depth&lt;/code&gt; flag sets the recursion limit. Recursion stops when there are no new archives to extract, so setting a very high max depth just sets the potential to go that deep. It will only go as deep as it needs to.&lt;/p&gt; 
&lt;p&gt;The findings for secrets located within an archive will include the path to the file inside the archive. Inner paths are separated with &lt;code&gt;!&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Example finding (shortened for brevity):&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Finding:     DB_PASSWORD=8ae31cacf141669ddfb5da
...
File:        testdata/archives/nested.tar.gz!archives/files.tar!files/.env.prod
Line:        4
Commit:      6e6ee6596d337bb656496425fb98644eb62b4a82
...
Fingerprint: 6e6ee6596d337bb656496425fb98644eb62b4a82:testdata/archives/nested.tar.gz!archives/files.tar!files/.env.prod:generic-api-key:4
Link:        https://github.com/leaktk/gitleaks/blob/6e6ee6596d337bb656496425fb98644eb62b4a82/testdata/archives/nested.tar.gz
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This means a secret was detected on line 4 of &lt;code&gt;files/.env.prod.&lt;/code&gt; which is in &lt;code&gt;archives/files.tar&lt;/code&gt; which is in &lt;code&gt;testdata/archives/nested.tar.gz&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Currently supported formats:&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/mholt/archives?tab=readme-ov-file#supported-compression-formats&quot;&gt;compression&lt;/a&gt; and &lt;a href=&quot;https://github.com/mholt/archives?tab=readme-ov-file#supported-archive-formats&quot;&gt;archive&lt;/a&gt; formats supported by mholt&#39;s &lt;a href=&quot;https://github.com/mholt/archives&quot;&gt;archives package&lt;/a&gt; are supported.&lt;/p&gt; 
&lt;h4&gt;Reporting&lt;/h4&gt; 
&lt;p&gt;Gitleaks has built-in support for several report formats: &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/testdata/expected/report/json_simple.json&quot;&gt;&lt;code&gt;json&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/testdata/expected/report/csv_simple.csv?plain=1&quot;&gt;&lt;code&gt;csv&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/testdata/expected/report/junit_simple.xml&quot;&gt;&lt;code&gt;junit&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://github.com/gitleaks/gitleaks/raw/master/testdata/expected/report/sarif_simple.sarif&quot;&gt;&lt;code&gt;sarif&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;If none of these formats fit your need, you can create your own report format with a &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-use-templates-in-go#step-4-writing-a-template&quot;&gt;Go &lt;code&gt;text/template&lt;/code&gt; .tmpl file&lt;/a&gt; and the &lt;code&gt;--report-template&lt;/code&gt; flag. The template can use &lt;a href=&quot;https://masterminds.github.io/sprig/&quot;&gt;extended functionality from the &lt;code&gt;Masterminds/sprig&lt;/code&gt; template library&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For example, the following template provides a custom JSON output:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-gotemplate&quot;&gt;# jsonextra.tmpl
[{{ $lastFinding := (sub (len . ) 1) }}
{{- range $i, $finding := . }}{{with $finding}}
    {
        &quot;Description&quot;: {{ quote .Description }},
        &quot;StartLine&quot;: {{ .StartLine }},
        &quot;EndLine&quot;: {{ .EndLine }},
        &quot;StartColumn&quot;: {{ .StartColumn }},
        &quot;EndColumn&quot;: {{ .EndColumn }},
        &quot;Line&quot;: {{ quote .Line }},
        &quot;Match&quot;: {{ quote .Match }},
        &quot;Secret&quot;: {{ quote .Secret }},
        &quot;File&quot;: &quot;{{ .File }}&quot;,
        &quot;SymlinkFile&quot;: {{ quote .SymlinkFile }},
        &quot;Commit&quot;: {{ quote .Commit }},
        &quot;Entropy&quot;: {{ .Entropy }},
        &quot;Author&quot;: {{ quote .Author }},
        &quot;Email&quot;: {{ quote .Email }},
        &quot;Date&quot;: {{ quote .Date }},
        &quot;Message&quot;: {{ quote .Message }},
        &quot;Tags&quot;: [{{ $lastTag := (sub (len .Tags ) 1) }}{{ range $j, $tag := .Tags }}{{ quote . }}{{ if ne $j $lastTag }},{{ end }}{{ end }}],
        &quot;RuleID&quot;: {{ quote .RuleID }},
        &quot;Fingerprint&quot;: {{ quote .Fingerprint }}
    }{{ if ne $i $lastFinding }},{{ end }}
{{- end}}{{ end }}
]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Usage:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;$ gitleaks dir ~/leaky-repo/ --report-path &quot;report.json&quot; --report-format template --report-template testdata/report/jsonextra.tmpl
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Sponsorships&lt;/h2&gt; 
&lt;p align=&quot;left&quot;&gt; &lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://coderabbit.ai/?utm_source=oss&amp;amp;utm_medium=sponsorship&amp;amp;utm_campaign=gitleaks&quot;&gt;coderabbit.ai&lt;/a&gt;&lt;/h3&gt;
&lt;a href=&quot;https://coderabbit.ai/?utm_source=oss&amp;amp;utm_medium=sponsorship&amp;amp;utm_campaign=gitleaks&quot;&gt; &lt;/a&gt;
&lt;a href=&quot;https://coderabbit.ai/?utm_source=oss&amp;amp;utm_medium=sponsorship&amp;amp;utm_campaign=gitleaks&quot;&gt; &lt;img alt=&quot;CodeRabbit.ai Sponsorship&quot; src=&quot;https://github.com/gitleaks/gitleaks/assets/15034943/76c30a85-887b-47ca-9956-17a8e55c6c41&quot; width=&quot;200&quot; /&gt; &lt;/a&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;h2&gt;Exit Codes&lt;/h2&gt; 
&lt;p&gt;You can always set the exit code when leaks are encountered with the --exit-code flag. Default exit codes below:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;0 - no leaks present
1 - leaks or error encountered
126 - unknown flag
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Join the Discord! &lt;a href=&quot;https://discord.gg/8Hzbrnkr7E&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1102689410522284044.svg?label=&amp;amp;logo=discord&amp;amp;logoColor=ffffff&amp;amp;color=7389D8&amp;amp;labelColor=6A7EC2&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/h3&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/55e3dc1f5a8ec7fb4d7a28c4c31766549ef34e5354f06992d5fa32a047aaaee0/gitleaks/gitleaks" medium="image" />
      
    </item>
    
    <item>
      <title>influxdata/telegraf</title>
      <link>https://github.com/influxdata/telegraf</link>
      <description>&lt;p&gt;Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;&lt;img src=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/assets/TelegrafTigerSmall.png&quot; alt=&quot;tiger&quot; title=&quot;tiger&quot; /&gt; Telegraf&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://godoc.org/github.com/influxdata/telegraf&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/doc-reference-00ADD8.svg?logo=go&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/_/telegraf/&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/library/telegraf.svg?sanitize=true&quot; alt=&quot;Docker pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/influxdata/telegraf&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/influxdata/telegraf&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://circleci.com/gh/influxdata/telegraf&quot;&gt;&lt;img src=&quot;https://circleci.com/gh/influxdata/telegraf.svg?style=svg&quot; alt=&quot;Circle CI&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Telegraf is an agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Offers a comprehensive suite of over 300 plugins, covering a wide range of functionalities including system monitoring, cloud services, and message passing&lt;/li&gt; 
 &lt;li&gt;Enables the integration of user-defined code to collect, transform, and transmit data efficiently&lt;/li&gt; 
 &lt;li&gt;Compiles into a standalone static binary without any external dependencies, ensuring a streamlined deployment process&lt;/li&gt; 
 &lt;li&gt;Utilizes TOML for configuration, providing a user-friendly and unambiguous setup experience&lt;/li&gt; 
 &lt;li&gt;Developed with contributions from a diverse community of over 1,200 contributors&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Users can choose plugins from a wide range of topics, including but not limited to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Devices: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/opcua&quot;&gt;OPC UA&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/modbus&quot;&gt;Modbus&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Logs: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/file&quot;&gt;File&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/tail&quot;&gt;Tail&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/directory_monitor&quot;&gt;Directory Monitor&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Messaging: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/amqp_consumer&quot;&gt;AMQP&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/kafka_consumer&quot;&gt;Kafka&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mqtt_consumer&quot;&gt;MQTT&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Monitoring: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/opentelemetry&quot;&gt;OpenTelemetry&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/prometheus&quot;&gt;Prometheus&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Networking: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/cisco_telemetry_mdt&quot;&gt;Cisco TelemetryMDT&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/gnmi&quot;&gt;gNMI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;System monitoring: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/cpu&quot;&gt;CPU&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mem&quot;&gt;Memory&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/disk&quot;&gt;Disk&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/net&quot;&gt;Network&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/smartctl&quot;&gt;SMART&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/docker&quot;&gt;Docker&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/nvidia_smi&quot;&gt;Nvidia SMI&lt;/a&gt;, etc.&lt;/li&gt; 
 &lt;li&gt;Universal: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/exec&quot;&gt;Exec&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/http&quot;&gt;HTTP&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/http_listener_v2&quot;&gt;HTTP Listener&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/snmp&quot;&gt;SNMP&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sql&quot;&gt;SQL&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Windows: &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/win_eventlog&quot;&gt;Event Log&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/win_wmi&quot;&gt;Management Instrumentation&lt;/a&gt;, &lt;a href=&quot;https://github.com/influxdata/telegraf/tree/master/plugins/inputs/win_perf_counters&quot;&gt;Performance Counters&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🔨 Installation&lt;/h2&gt; 
&lt;p&gt;For binary builds, Docker images, RPM &amp;amp; DEB packages, and other builds of Telegraf, please see the &lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/docs/INSTALL_GUIDE.md&quot;&gt;install guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/docs/RELEASES.md&quot;&gt;releases documentation&lt;/a&gt; for details on versioning and when releases are made.&lt;/p&gt; 
&lt;h2&gt;💻 Usage&lt;/h2&gt; 
&lt;p&gt;Users define a TOML configuration with the plugins and settings they wish to use, then pass that configuration to Telegraf. The Telegraf agent then collects data from inputs at each interval and sends data to outputs at each flush interval.&lt;/p&gt; 
&lt;p&gt;For a basic walkthrough see &lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/docs/QUICK_START.md&quot;&gt;quick start&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;📖 Documentation&lt;/h2&gt; 
&lt;p&gt;For a full list of documentation including tutorials, reference and other material, start with the &lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/docs/README.md&quot;&gt;/docs directory&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Additionally, each plugin has its own README that includes details about how to configure, use, and sometimes debug or troubleshoot. Look under the &lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/plugins/&quot;&gt;/plugins directory&lt;/a&gt; for specific plugins.&lt;/p&gt; 
&lt;p&gt;Here are some commonly used documents:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/CHANGELOG.md&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/docs/CONFIGURATION.md&quot;&gt;Configuration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/docs/FAQ.md&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/influxdata/telegraf/releases&quot;&gt;Releases&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/SECURITY.md&quot;&gt;Security&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;❤️ Contribute&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/influxdata/telegraf/raw/master/CONTRIBUTING.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/contribute-to_telegraf-blue.svg?logo=influxdb&quot; alt=&quot;Contribute&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;We love our community of over 1,200 contributors! Many of the plugins included in Telegraf were originally contributed by community members. Check out our &lt;a href=&quot;https://raw.githubusercontent.com/influxdata/telegraf/master/CONTRIBUTING.md&quot;&gt;contributing guide&lt;/a&gt; if you are interested in helping out. Also, join us on our &lt;a href=&quot;https://influxdata.com/slack&quot;&gt;Community Slack&lt;/a&gt; or &lt;a href=&quot;https://community.influxdata.com/&quot;&gt;Community Forums&lt;/a&gt; if you have questions or comments for our engineering teams.&lt;/p&gt; 
&lt;p&gt;If you are completely new to Telegraf and InfluxDB, you can also enroll for free at &lt;a href=&quot;https://www.influxdata.com/university/&quot;&gt;InfluxDB university&lt;/a&gt; to take courses to learn more.&lt;/p&gt; 
&lt;h2&gt;ℹ️ Support&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.influxdata.com/slack&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/slack-join_chat-blue.svg?logo=slack&quot; alt=&quot;Slack&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://community.influxdata.com/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/discourse-join_forums-blue.svg?logo=discourse&quot; alt=&quot;Forums&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Please use the &lt;a href=&quot;https://influxdata.com/slack&quot;&gt;Community Slack&lt;/a&gt; or &lt;a href=&quot;https://community.influxdata.com/&quot;&gt;Community Forums&lt;/a&gt; if you have questions or comments for our engineering teams. GitHub issues are limited to actual issues and feature requests only.&lt;/p&gt; 
&lt;h2&gt;📜 License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/influxdata/telegraf/raw/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue&quot; alt=&quot;MIT&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/3ce7f1bcf6b058eb01b34cc926b84a74d07483ae200b9e6b7b922be3b00b778d/influxdata/telegraf" medium="image" />
      
    </item>
    
    <item>
      <title>hatchet-dev/hatchet</title>
      <link>https://github.com/hatchet-dev/hatchet</link>
      <description>&lt;p&gt;🪓 An orchestration engine for background tasks, AI agents, and durable workflows&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://hatchet.run?utm_source=github&amp;amp;utm_campaign=readme&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;./assets/hatchet_logo_dark.svg&quot; /&gt; 
   &lt;img width=&quot;200&quot; alt=&quot;Hatchet Logo&quot; src=&quot;https://raw.githubusercontent.com/hatchet-dev/hatchet/main/assets/hatchet_logo_light.svg?sanitize=true&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; 
 &lt;h3&gt;An orchestration engine for background tasks, AI agents, and durable workflows&lt;/h3&gt; 
 &lt;p&gt;&lt;a href=&quot;https://docs.hatchet.run&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-docs.hatchet.run-3F16E4&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-purple.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/github.com/hatchet-dev/hatchet&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/hatchet-dev/hatchet.svg?sanitize=true&quot; alt=&quot;Go Reference&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@hatchet-dev/typescript-sdk&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dm/%40hatchet-dev%2Ftypescript-sdk&quot; alt=&quot;NPM Downloads&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://hatchet.run/discord&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1088927970518909068?style=social&amp;amp;logo=discord&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hatchet_dev&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/url/https/twitter.com/hatchet-dev.svg?style=social&amp;amp;label=Follow%20%40hatchet-dev&quot; alt=&quot;Twitter&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/hatchet-dev/hatchet&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/hatchet-dev/hatchet?style=social&quot; alt=&quot;GitHub Repo stars&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://cloud.hatchet.run&quot;&gt;Hatchet Cloud&lt;/a&gt; · &lt;a href=&quot;https://docs.hatchet.run&quot;&gt;Documentation&lt;/a&gt; · &lt;a href=&quot;https://hatchet.run&quot;&gt;Website&lt;/a&gt; · &lt;a href=&quot;https://github.com/hatchet-dev/hatchet/issues&quot;&gt;Issues&lt;/a&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;What is Hatchet?&lt;/h3&gt; 
&lt;p&gt;Hatchet is a platform for orchestrating background tasks, AI agents, and durable workflows at scale. It supports applications written in Python, TypeScript, Go and Ruby, and can be used as a service through &lt;a href=&quot;https://cloud.hatchet.run&quot;&gt;Hatchet Cloud&lt;/a&gt; or &lt;a href=&quot;https://docs.hatchet.run/self-hosting&quot;&gt;self-hosting&lt;/a&gt;. Hatchet provides a full platform for queuing, automatic retries, durability, real-time monitoring, alerting, and logging.&lt;/p&gt; 
&lt;h3&gt;Get started quickly&lt;/h3&gt; 
&lt;p&gt;The fastest way to get started with Hatchet is signing up for &lt;a href=&quot;https://cloud.hatchet.run&quot;&gt;Hatchet Cloud&lt;/a&gt; to try it out! We recommend this even if you plan on self-hosting, so you can have a look at what a fully-deployed Hatchet platform looks like.&lt;/p&gt; 
&lt;p&gt;To run Hatchet locally, the fastest path for setup is to install the Hatchet CLI (on MacOS, Linux or WSL) - note that this requires &lt;a href=&quot;https://www.docker.com/get-started&quot;&gt;Docker&lt;/a&gt; installed locally to work:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;curl -fsSL https://install.hatchet.run/install.sh | bash
hatchet --version
hatchet server start
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To view full documentation for self-hosting and using cloud, have a look at the &lt;a href=&quot;https://docs.hatchet.run&quot;&gt;docs&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;When should I use Hatchet?&lt;/h3&gt; 
&lt;p&gt;You can use Hatchet for running background tasks, AI agents, or other types of long-running workflows. It is designed to be a feature-complete solution for systems where &lt;strong&gt;correctness, reliability, horizontal scalability, and observability&lt;/strong&gt; are essential. From a technical perspective, it differs from other solutions in that it uses Postgres as a durability layer for both the task runtime and the observability system, making it particularly easy to self-host.&lt;/p&gt; 
&lt;p&gt;For some end-to-end examples of workflows you can build with Hatchet, check out our &lt;a href=&quot;https://docs.hatchet.run/cookbooks&quot;&gt;cookbooks&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Hatchet Features&lt;/h3&gt; 
&lt;h4&gt;Background Tasks&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/tasks&quot;&gt;Background tasks&lt;/a&gt;: Hatchet supports one-off background tasks defined as simple functions. It supports both fire-and-forget and fire-and-wait tasks with subscriptions&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/retry-policies&quot;&gt;Retries&lt;/a&gt;: flexible and configurable retry policies for tasks, with optional &lt;a href=&quot;https://docs.hatchet.run/v1/retry-policies#exponential-backoff&quot;&gt;exponential backoff&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/cron-runs&quot;&gt;Cron jobs&lt;/a&gt; and &lt;a href=&quot;https://docs.hatchet.run/v1/scheduled-runs&quot;&gt;scheduled runs&lt;/a&gt; for scheduling tasks at some point in the future&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/advanced-assignment/worker-affinity&quot;&gt;Task routing&lt;/a&gt; based on strict conditions, like &lt;strong&gt;worker labels&lt;/strong&gt;, or more complex, weighted scheduling rules using &lt;strong&gt;worker affinity&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/events&quot;&gt;Event-based triggering&lt;/a&gt; and &lt;a href=&quot;https://docs.hatchet.run/v1/durable-event-waits&quot;&gt;listeners&lt;/a&gt; to build event-driven, highly distributed systems&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/webhooks&quot;&gt;Webhook-based triggering&lt;/a&gt; for easily triggering Hatchet tasks from upstream data sources&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Task orchestration and workflows&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/durable-tasks&quot;&gt;Durable tasks&lt;/a&gt; for building fault-tolerant, long-running workflows which can easily recover from failure&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/directed-acyclic-graphs&quot;&gt;DAGs (directed acyclic graphs)&lt;/a&gt; for building data pipelines and simple workflows. See &lt;a href=&quot;https://docs.hatchet.run/cookbooks/durable-tasks-vs-dags&quot;&gt;our guide&lt;/a&gt; on choosing between durable tasks and DAGs&lt;/li&gt; 
 &lt;li&gt;Complex pause/resume conditions using &lt;a href=&quot;https://docs.hatchet.run/v1/durable-sleep&quot;&gt;durable sleep&lt;/a&gt;, &lt;a href=&quot;https://docs.hatchet.run/v1/durable-event-waits&quot;&gt;event waits&lt;/a&gt;, or a combination of both&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Scale&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/priority&quot;&gt;Priority&lt;/a&gt; so that critical tasks can run before tasks which aren&#39;t latency sensitive, like backfill jobs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/rate-limits&quot;&gt;Rate limiting&lt;/a&gt; to deal with third-party APIs, or even to enforce per-user rate limits using &lt;strong&gt;dynamic rate limits&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/concurrency&quot;&gt;Fair scheduling&lt;/a&gt; using Hatchet&#39;s concurrency policies, which can set a concurrency limit for tasks based on dynamic keys&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/workers#slots&quot;&gt;Worker slots&lt;/a&gt; for ensuring that workers cannot take on more work than they can handle&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Monitoring, observability, and management&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Real-time web UI with alerting, monitoring, and logging&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/opentelemetry&quot;&gt;OpenTelemetry&lt;/a&gt; (using Hatchet&#39;s built-in collector or external destinations)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.hatchet.run/v1/prometheus-metrics&quot;&gt;Prometheus metrics&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-tenant&lt;/strong&gt; by default, so a single Hatchet instance can support multiple teams&lt;/li&gt; 
 &lt;li&gt;Users and roles&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;&lt;a href=&quot;https://cloud.hatchet.run&quot;&gt;Hatchet Cloud&lt;/a&gt; features&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Autoscaling and pay-as-you-go plans&lt;/li&gt; 
 &lt;li&gt;Multi-region deployments&lt;/li&gt; 
 &lt;li&gt;SSO&lt;/li&gt; 
 &lt;li&gt;Improved performance for monitoring, logging, and observability&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Documentation&lt;/h3&gt; 
&lt;p&gt;The most up-to-date documentation can be found at &lt;a href=&quot;https://docs.hatchet.run&quot;&gt;https://docs.hatchet.run&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Community &amp;amp; Support&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/ZMeUafwH89&quot;&gt;Discord&lt;/a&gt; - best for getting in touch with the maintainers and hanging with the community&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hatchet-dev/hatchet/issues&quot;&gt;Github Issues&lt;/a&gt; - used for filing bug reports&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hatchet-dev/hatchet/discussions&quot;&gt;Github Discussions&lt;/a&gt; - used for starting in-depth technical discussions that are suited for asynchronous communication&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;mailto:contact@hatchet.run&quot;&gt;Email&lt;/a&gt; - best for getting Hatchet Cloud support and for help with billing, data deletion, etc.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Hatchet vs...&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;Hatchet vs Durable Execution Platforms (Temporal, DBOS)&lt;/summary&gt; 
 &lt;h4&gt;&lt;/h4&gt; 
 &lt;p&gt;Hatchet&#39;s &lt;a href=&quot;https://docs.hatchet.run/v1/durable-tasks&quot;&gt;durable tasks&lt;/a&gt; feature is a drop-in replacement for Temporal or DBOS workflows. You also get:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;End-to-end observability of durable tasks using OpenTelemetry, monitoring and logging&lt;/li&gt; 
  &lt;li&gt;Features built for running workflows at scale, such as rate limiting, complex routing, and worker-level slot control&lt;/li&gt; 
  &lt;li&gt;Multi-tenancy, users and roles supported out of the box&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;In addition to making durable execution easier to use, Hatchet can also be used as a general-purpose queue, a DAG-based orchestrator, a durable execution engine, or all three, allowing teams to centralize their async and background processing in a single platform.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Hatchet vs Task Queues (Celery, BullMQ)&lt;/summary&gt; 
 &lt;h4&gt;&lt;/h4&gt; 
 &lt;p&gt;Traditional task queues like BullMQ and Celery trade off durability for throughput. Tasks persist on the broker (typically Redis or RabbitMQ) while the task is executing, but are not persisted afterwards. This makes it difficult to build complex workflows, as there is no persistent intermediate state. It also makes it difficult to recover and replay tasks which failed and were removed from the queue, resulting in custom admin tooling to work with these libraries at scale.&lt;/p&gt; 
 &lt;p&gt;On the other hand, Hatchet is a &lt;em&gt;durable&lt;/em&gt; task queue, meaning it persists the history of all executions (up to a defined retention period), which allows for easy monitoring, debugging and durable task features. Hatchet&#39;s durability features add some overhead: while Hatchet has been load-tested up to 10k tasks/second, it consumes more resources than a system built on Redis or RabbitMQ, which can reach much higher throughput.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Hatchet vs DAG-based platforms (Airflow, Prefect, Dagster)&lt;/summary&gt; 
 &lt;h4&gt;&lt;/h4&gt; 
 &lt;p&gt;These tools are usually built with data engineers in mind, and aren’t designed to run as part of a high-volume application. They’re usually higher latency and higher cost, with their primary selling point being integrations with common datastores and connectors.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;When to use Hatchet:&lt;/strong&gt; when you&#39;d like to use a DAG-based framework, write your own integrations and functions, and require higher throughput (&amp;gt;100/s)&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;When to use other DAG-based platforms:&lt;/strong&gt; when you&#39;d like to use other data stores and connectors that work out of the box&lt;/p&gt; 
&lt;/details&gt; 
&lt;h3&gt;Issues&lt;/h3&gt; 
&lt;p&gt;Please submit any bugs that you encounter via GitHub issues.&lt;/p&gt; 
&lt;h3&gt;I&#39;d Like to Contribute&lt;/h3&gt; 
&lt;p&gt;Please let us know what you&#39;re interested in working on in the #contributing channel on &lt;a href=&quot;https://discord.gg/ZMeUafwH89&quot;&gt;Discord&lt;/a&gt;. This will help us shape the direction of the project and will make collaboration much easier!&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/d590d259c3332240ce6480143346b23c272b87ed6b69b60906271d008b59c45f/hatchet-dev/hatchet" medium="image" />
      
    </item>
    
    <item>
      <title>syncthing/syncthing</title>
      <link>https://github.com/syncthing/syncthing</link>
      <description>&lt;p&gt;Open Source Continuous File Synchronization&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://syncthing.net/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-text-128.png&quot; alt=&quot;Syncthing&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.mozilla.org/MPL/2.0/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MPLv2-blue.svg?style=flat-square&quot; alt=&quot;MPLv2 License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/88&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/88/badge&quot; alt=&quot;CII Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/syncthing/syncthing&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/syncthing/syncthing&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Goals&lt;/h2&gt; 
&lt;p&gt;Syncthing is a &lt;strong&gt;continuous file synchronization program&lt;/strong&gt;. It synchronizes files between two or more computers. We strive to fulfill the goals below. The goals are listed in order of importance, the most important ones first. This is the summary version of the goal list - for more commentary, see the full &lt;a href=&quot;https://github.com/syncthing/syncthing/raw/main/GOALS.md&quot;&gt;Goals document&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Syncthing should be:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Safe From Data Loss&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Protecting the user&#39;s data is paramount. We take every reasonable precaution to avoid corrupting the user&#39;s files.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Secure Against Attackers&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Again, protecting the user&#39;s data is paramount. Regardless of our other goals, we must never allow the user&#39;s data to be susceptible to eavesdropping or modification by unauthorized parties.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Easy to Use&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Syncthing should be approachable, understandable, and inclusive.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Automatic&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;User interaction should be required only when absolutely necessary.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Universally Available&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Syncthing should run on every common computer. We are mindful that the latest technology is not always available to every individual.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;For Individuals&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Syncthing is primarily about empowering the individual user with safe, secure, and easy to use file synchronization.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Everything Else&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;There are many things we care about that don&#39;t make it on to the list. It is fine to optimize for these values, as long as they are not in conflict with the stated goals above.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;Take a look at the &lt;a href=&quot;https://docs.syncthing.net/intro/getting-started.html&quot;&gt;getting started guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;There are a few examples for keeping Syncthing running in the background on your system in &lt;a href=&quot;https://github.com/syncthing/syncthing/raw/main/etc&quot;&gt;the etc directory&lt;/a&gt;. There are also several &lt;a href=&quot;https://docs.syncthing.net/users/contrib.html#gui-wrappers&quot;&gt;GUI implementations&lt;/a&gt; for Windows, Mac, and Linux.&lt;/p&gt; 
&lt;h2&gt;Docker&lt;/h2&gt; 
&lt;p&gt;To run Syncthing in Docker, see &lt;a href=&quot;https://github.com/syncthing/syncthing/raw/main/README-Docker.md&quot;&gt;the Docker README&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Getting in Touch&lt;/h2&gt; 
&lt;p&gt;The first and best point of contact is the &lt;a href=&quot;https://forum.syncthing.net/&quot;&gt;Forum&lt;/a&gt;. If you&#39;ve found something that is clearly a bug, feel free to report it in the &lt;a href=&quot;https://github.com/syncthing/syncthing/issues&quot;&gt;GitHub issue tracker&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;If you believe that you’ve found a Syncthing-related security vulnerability, please report it by emailing &lt;a href=&quot;mailto:security@syncthing.net&quot;&gt;security@syncthing.net&lt;/a&gt;. Do not report it in the Forum or issue tracker.&lt;/p&gt; 
&lt;h2&gt;Building&lt;/h2&gt; 
&lt;p&gt;Building Syncthing from source is easy. After extracting the source bundle from a release or checking out git, you just need to run &lt;code&gt;go run build.go&lt;/code&gt; and the binaries are created in &lt;code&gt;./bin&lt;/code&gt;. There&#39;s &lt;a href=&quot;https://docs.syncthing.net/dev/building.html&quot;&gt;a guide&lt;/a&gt; with more details on the build process.&lt;/p&gt; 
&lt;h2&gt;Signed Releases&lt;/h2&gt; 
&lt;p&gt;Release binaries are GPG signed with the key available from &lt;a href=&quot;https://syncthing.net/security/&quot;&gt;https://syncthing.net/security/&lt;/a&gt;. There is also a built-in automatic upgrade mechanism (disabled in some distribution channels) which uses a compiled in ECDSA signature. macOS and Windows binaries are also code-signed.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Please see the Syncthing &lt;a href=&quot;https://docs.syncthing.net/&quot;&gt;documentation site&lt;/a&gt; &lt;a href=&quot;https://github.com/syncthing/docs&quot;&gt;[source]&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;All code is licensed under the &lt;a href=&quot;https://github.com/syncthing/syncthing/raw/main/LICENSE&quot;&gt;MPLv2 License&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/bfb11d48725ce0f4f690e84f84ef513c87e96032f5cca804a867f65ac43ddfd6/syncthing/syncthing" medium="image" />
      
    </item>
    
    <item>
      <title>knadh/listmonk</title>
      <link>https://github.com/knadh/listmonk</link>
      <description>&lt;p&gt;High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://zerodha.tech&quot;&gt;&lt;img src=&quot;https://zerodha.tech/static/images/github-badge.svg?sanitize=true&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://listmonk.app&quot;&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/547147/231084896-835dba66-2dfe-497c-ba0f-787564c0819e.png&quot; alt=&quot;listmonk-logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://listmonk.app&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/689b5fbb-dd25-4956-a36f-e3226a65f9c4&quot; alt=&quot;listmonk-dashboard&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Visit &lt;a href=&quot;https://listmonk.app&quot;&gt;listmonk.app&lt;/a&gt; for more info. Check out the &lt;a href=&quot;https://demo.listmonk.app&quot;&gt;&lt;strong&gt;live demo&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Docker&lt;/h3&gt; 
&lt;p&gt;The latest image is available on DockerHub at &lt;a href=&quot;https://hub.docker.com/r/listmonk/listmonk/tags?page=1&amp;amp;ordering=last_updated&amp;amp;name=latest&quot;&gt;&lt;code&gt;listmonk/listmonk:latest&lt;/code&gt;&lt;/a&gt;. Download and use the sample &lt;a href=&quot;https://github.com/knadh/listmonk/raw/master/docker-compose.yml&quot;&gt;docker-compose.yml&lt;/a&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;# Download the compose file to the current directory.
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml

# Run the services in the background.
docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Visit &lt;code&gt;http://localhost:9000&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://listmonk.app/docs/installation&quot;&gt;installation docs&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Binary&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download the &lt;a href=&quot;https://github.com/knadh/listmonk/releases&quot;&gt;latest release&lt;/a&gt; and extract the listmonk binary.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;./listmonk --new-config&lt;/code&gt; to generate config.toml. Edit it.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;./listmonk --install&lt;/code&gt; to setup the Postgres DB (or &lt;code&gt;--upgrade&lt;/code&gt; to upgrade an existing DB. Upgrades are idempotent and running them multiple times have no side effects).&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;./listmonk&lt;/code&gt; and visit &lt;code&gt;http://localhost:9000&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See &lt;a href=&quot;https://listmonk.app/docs/installation&quot;&gt;installation docs&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Developers&lt;/h2&gt; 
&lt;p&gt;listmonk is free and open source software licensed under AGPLv3. If you are interested in contributing, refer to the &lt;a href=&quot;https://listmonk.app/docs/developer-setup&quot;&gt;developer setup&lt;/a&gt;. The backend is written in Go and the frontend is Vue with Buefy for UI.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;listmonk is licensed under the AGPL v3 license.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/193833307/8d94bb7b-e76e-4a8e-8944-ebee3c0d0e70" medium="image" />
      
    </item>
    
    <item>
      <title>go-gitea/gitea</title>
      <link>https://github.com/go-gitea/gitea</link>
      <description>&lt;p&gt;Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Gitea&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain&quot; title=&quot;Release Nightly&quot;&gt;&lt;img src=&quot;https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/Gitea&quot; title=&quot;Join the Discord chat at https://discord.gg/Gitea&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/322538954119184384.svg?logo=discord&amp;amp;logoColor=white&amp;amp;label=Discord&amp;amp;color=5865F2&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/code.gitea.io/gitea&quot; title=&quot;Go Report Card&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/code.gitea.io/gitea&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/code.gitea.io/gitea&quot; title=&quot;GoDoc&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/go-gitea/gitea/releases/latest&quot; title=&quot;GitHub release&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/go-gitea/gitea.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.codetriage.com/go-gitea/gitea&quot; title=&quot;Help Contribute to Open Source&quot;&gt;&lt;img src=&quot;https://www.codetriage.com/go-gitea/gitea/badges/users.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea&quot; title=&quot;Become a backer/sponsor of gitea&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&amp;amp;color=brightgreen&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opensource.org/licenses/MIT&quot; title=&quot;License: MIT&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-blue.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://translate.gitea.com&quot; title=&quot;Crowdin&quot;&gt;&lt;img src=&quot;https://badges.crowdin.net/gitea/localized.svg?sanitize=true&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/go-gitea/gitea/main/README.zh-tw.md&quot;&gt;繁體中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/go-gitea/gitea/main/README.zh-cn.md&quot;&gt;简体中文&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Purpose&lt;/h2&gt; 
&lt;p&gt;The goal of this project is to make the easiest, fastest, and most painless way of setting up a self-hosted Git service.&lt;/p&gt; 
&lt;p&gt;As Gitea is written in Go, it works across &lt;strong&gt;all&lt;/strong&gt; the platforms and architectures that are supported by Go, including Linux, macOS, and Windows on x86, amd64, ARM and PowerPC architectures. This project has been &lt;a href=&quot;https://blog.gitea.com/welcome-to-gitea/&quot;&gt;forked&lt;/a&gt; from &lt;a href=&quot;https://gogs.io&quot;&gt;Gogs&lt;/a&gt; since November of 2016, but a lot has changed.&lt;/p&gt; 
&lt;p&gt;For online demonstrations, you can visit &lt;a href=&quot;https://demo.gitea.com&quot;&gt;demo.gitea.com&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For accessing free Gitea service (with a limited number of repositories), you can visit &lt;a href=&quot;https://gitea.com/user/login&quot;&gt;gitea.com&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;To quickly deploy your own dedicated Gitea instance on Gitea Cloud, you can start a free trial at &lt;a href=&quot;https://cloud.gitea.com&quot;&gt;cloud.gitea.com&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;You can find comprehensive documentation on our official &lt;a href=&quot;https://docs.gitea.com/&quot;&gt;documentation website&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;It includes installation, administration, usage, development, contributing guides, and more to help you get started and explore all features effectively.&lt;/p&gt; 
&lt;p&gt;If you have any suggestions or would like to contribute to it, you can visit the &lt;a href=&quot;https://gitea.com/gitea/docs&quot;&gt;documentation repository&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Building&lt;/h2&gt; 
&lt;p&gt;From the root of the source tree, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;TAGS=&quot;bindata&quot; make build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The &lt;code&gt;build&lt;/code&gt; target is split into two sub-targets:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;make backend&lt;/code&gt; which requires &lt;a href=&quot;https://go.dev/dl/&quot;&gt;Go Stable&lt;/a&gt;, the required version is defined in &lt;a href=&quot;https://raw.githubusercontent.com/go-gitea/gitea/main/go.mod&quot;&gt;go.mod&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;make frontend&lt;/code&gt; which requires &lt;a href=&quot;https://nodejs.org/en/download/&quot;&gt;Node.js LTS&lt;/a&gt; or greater and &lt;a href=&quot;https://pnpm.io/installation&quot;&gt;pnpm&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Internet connectivity is required to download the go and npm modules. When building from the official source tarballs which include pre-built frontend files, the &lt;code&gt;frontend&lt;/code&gt; target will not be triggered, making it possible to build without Node.js.&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href=&quot;https://docs.gitea.com/installation/install-from-source&quot;&gt;https://docs.gitea.com/installation/install-from-source&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Using&lt;/h2&gt; 
&lt;p&gt;After building, a binary file named &lt;code&gt;gitea&lt;/code&gt; will be generated in the root of the source tree by default. To run it, use:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;./gitea web
&lt;/code&gt;&lt;/pre&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;If you&#39;re interested in using our APIs, we have experimental support with &lt;a href=&quot;https://docs.gitea.com/api&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Expected workflow is: Fork -&amp;gt; Patch -&amp;gt; Push -&amp;gt; Pull Request&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;ol&gt; 
  &lt;li&gt;&lt;strong&gt;YOU MUST READ THE &lt;a href=&quot;https://raw.githubusercontent.com/go-gitea/gitea/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTORS GUIDE&lt;/a&gt; BEFORE STARTING TO WORK ON A PULL REQUEST.&lt;/strong&gt;&lt;/li&gt; 
  &lt;li&gt;If you have found a vulnerability in the project, please write privately to &lt;strong&gt;&lt;a href=&quot;mailto:security@gitea.io&quot;&gt;security@gitea.io&lt;/a&gt;&lt;/strong&gt;. Thanks!&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/div&gt; 
&lt;h2&gt;Translating&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://translate.gitea.com&quot;&gt;&lt;img src=&quot;https://badges.crowdin.net/gitea/localized.svg?sanitize=true&quot; alt=&quot;Crowdin&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Translations are done through &lt;a href=&quot;https://translate.gitea.com&quot;&gt;Crowdin&lt;/a&gt;. If you want to translate to a new language, ask one of the managers in the Crowdin project to add a new language there.&lt;/p&gt; 
&lt;p&gt;You can also just create an issue for adding a language or ask on Discord on the #translation channel. If you need context or find some translation issues, you can leave a comment on the string or ask on Discord. For general translation questions there is a section in the docs. Currently a bit empty, but we hope to fill it as questions pop up.&lt;/p&gt; 
&lt;p&gt;Get more information from &lt;a href=&quot;https://docs.gitea.com/contributing/localization&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Official and Third-Party Projects&lt;/h2&gt; 
&lt;p&gt;We provide an official &lt;a href=&quot;https://gitea.com/gitea/go-sdk&quot;&gt;go-sdk&lt;/a&gt;, a CLI tool called &lt;a href=&quot;https://gitea.com/gitea/tea&quot;&gt;tea&lt;/a&gt; and an &lt;a href=&quot;https://gitea.com/gitea/act_runner&quot;&gt;action runner&lt;/a&gt; for Gitea Action.&lt;/p&gt; 
&lt;p&gt;We maintain a list of Gitea-related projects at &lt;a href=&quot;https://gitea.com/gitea/awesome-gitea&quot;&gt;gitea/awesome-gitea&lt;/a&gt;, where you can discover more third-party projects, including SDKs, plugins, themes, and more.&lt;/p&gt; 
&lt;h2&gt;Communication&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://discord.gg/Gitea&quot; title=&quot;Join the Discord chat at https://discord.gg/Gitea&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/322538954119184384.svg?logo=discord&amp;amp;logoColor=white&amp;amp;label=Discord&amp;amp;color=5865F2&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;If you have questions that are not covered by the &lt;a href=&quot;https://docs.gitea.com/&quot;&gt;documentation&lt;/a&gt;, you can get in contact with us on our &lt;a href=&quot;https://discord.gg/Gitea&quot;&gt;Discord server&lt;/a&gt; or create a post in the &lt;a href=&quot;https://forum.gitea.com/&quot;&gt;discourse forum&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Authors&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/orgs/go-gitea/people&quot;&gt;Maintainers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-gitea/gitea/graphs/contributors&quot;&gt;Contributors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/go-gitea/gitea/main/options/locale/TRANSLATORS&quot;&gt;Translators&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Backers&lt;/h2&gt; 
&lt;p&gt;Thank you to all our backers! 🙏 [&lt;a href=&quot;https://opencollective.com/gitea#backer&quot;&gt;Become a backer&lt;/a&gt;]&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://opencollective.com/gitea#backers&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/backers.svg?width=890&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [&lt;a href=&quot;https://opencollective.com/gitea#sponsor&quot;&gt;Become a sponsor&lt;/a&gt;]&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://opencollective.com/gitea/sponsor/0/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/0/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/1/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/1/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/2/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/2/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/3/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/3/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/4/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/4/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/5/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/5/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/6/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/6/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/7/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/7/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/8/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/8/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/gitea/sponsor/9/website&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://opencollective.com/gitea/sponsor/9/avatar.svg?sanitize=true&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;How do you pronounce Gitea?&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Gitea is pronounced &lt;a href=&quot;https://youtu.be/EM71-2uDAoY&quot;&gt;/ɡɪ’ti:/&lt;/a&gt; as in &quot;gi-tea&quot; with a hard g.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Why is this not hosted on a Gitea instance?&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;We&#39;re &lt;a href=&quot;https://github.com/go-gitea/gitea/issues/1029&quot;&gt;working on it&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Where can I find the security patches?&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;In the &lt;a href=&quot;https://github.com/go-gitea/gitea/releases&quot;&gt;release log&lt;/a&gt; or the &lt;a href=&quot;https://github.com/go-gitea/gitea/raw/main/CHANGELOG.md&quot;&gt;change log&lt;/a&gt;, search for the keyword &lt;code&gt;SECURITY&lt;/code&gt; to find the security patches.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the MIT License. See the &lt;a href=&quot;https://github.com/go-gitea/gitea/raw/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for the full license text.&lt;/p&gt; 
&lt;h2&gt;Further information&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;Looking for an overview of the interface? Check it out!&lt;/summary&gt; 
 &lt;h3&gt;Login/Register Page&lt;/h3&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/login.png&quot; alt=&quot;Login&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/register.png&quot; alt=&quot;Register&quot; /&gt;&lt;/p&gt; 
 &lt;h3&gt;User Dashboard&lt;/h3&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/home.png&quot; alt=&quot;Home&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/issues.png&quot; alt=&quot;Issues&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/pull_requests.png&quot; alt=&quot;Pull Requests&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/milestones.png&quot; alt=&quot;Milestones&quot; /&gt;&lt;/p&gt; 
 &lt;h3&gt;User Profile&lt;/h3&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/user_profile.png&quot; alt=&quot;Profile&quot; /&gt;&lt;/p&gt; 
 &lt;h3&gt;Explore&lt;/h3&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/explore_repos.png&quot; alt=&quot;Repos&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/explore_users.png&quot; alt=&quot;Users&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/explore_orgs.png&quot; alt=&quot;Orgs&quot; /&gt;&lt;/p&gt; 
 &lt;h3&gt;Repository&lt;/h3&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/repo_home.png&quot; alt=&quot;Home&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_commits.png&quot; alt=&quot;Commits&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_branches.png&quot; alt=&quot;Branches&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_labels.png&quot; alt=&quot;Labels&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_milestones.png&quot; alt=&quot;Milestones&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_releases.png&quot; alt=&quot;Releases&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_tags.png&quot; alt=&quot;Tags&quot; /&gt;&lt;/p&gt; 
 &lt;h4&gt;Repository Issue&lt;/h4&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/repo_issues.png&quot; alt=&quot;List&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_issue.png&quot; alt=&quot;Issue&quot; /&gt;&lt;/p&gt; 
 &lt;h4&gt;Repository Pull Requests&lt;/h4&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/repo_pull_requests.png&quot; alt=&quot;List&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_pull_request.png&quot; alt=&quot;Pull Request&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_pull_request_file.png&quot; alt=&quot;File&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_pull_request_commits.png&quot; alt=&quot;Commits&quot; /&gt;&lt;/p&gt; 
 &lt;h4&gt;Repository Actions&lt;/h4&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/repo_actions.png&quot; alt=&quot;List&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_actions_run.png&quot; alt=&quot;Details&quot; /&gt;&lt;/p&gt; 
 &lt;h4&gt;Repository Activity&lt;/h4&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/repo_activity.png&quot; alt=&quot;Activity&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_contributors.png&quot; alt=&quot;Contributors&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_code_frequency.png&quot; alt=&quot;Code Frequency&quot; /&gt; &lt;img src=&quot;https://dl.gitea.com/screenshots/repo_recent_commits.png&quot; alt=&quot;Recent Commits&quot; /&gt;&lt;/p&gt; 
 &lt;h3&gt;Organization&lt;/h3&gt; 
 &lt;p&gt;&lt;img src=&quot;https://dl.gitea.com/screenshots/org_home.png&quot; alt=&quot;Home&quot; /&gt;&lt;/p&gt; 
&lt;/details&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/72495579/0e8c9b91-0512-469f-94bd-6b9b0991a932" medium="image" />
      
    </item>
    
    <item>
      <title>maximhq/bifrost</title>
      <link>https://github.com/maximhq/bifrost</link>
      <description>&lt;p&gt;Fastest enterprise AI gateway (50x faster than LiteLLM) with adaptive load balancer, cluster mode, guardrails, 1000+ models support &amp; &lt;100 µs overhead at 5k RPS.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Bifrost AI Gateway&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://goreportcard.com/report/github.com/maximhq/bifrost/core&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/maximhq/bifrost/core&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/exN5KAydbU&quot;&gt;&lt;img src=&quot;https://dcbadge.limes.pink/api/server/https://discord.gg/exN5KAydbU?style=flat&quot; alt=&quot;Discord badge&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/maximhq/bifrost&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/maximhq/bifrost/branch/main/graph/badge.svg?sanitize=true&quot; alt=&quot;codecov&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/maximhq/bifrost&quot; alt=&quot;Docker Pulls&quot; /&gt; &lt;a href=&quot;https://app.getpostman.com/run-collection/31642484-2ba0e658-4dcd-49f4-845a-0c7ed745b916?action=collection%2Ffork&amp;amp;source=rip_markdown&amp;amp;collection-url=entityId%3D31642484-2ba0e658-4dcd-49f4-845a-0c7ed745b916%26entityType%3Dcollection%26workspaceId%3D63e853c8-9aec-477f-909c-7f02f543150e&quot;&gt;&lt;img src=&quot;https://run.pstmn.io/button.svg?sanitize=true&quot; alt=&quot;Run In Postman&quot; style=&quot;width: 95px; height: 21px;&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://artifacthub.io/packages/search?repo=bifrost&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/bifrost&quot; alt=&quot;Artifact Hub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/maximhq/bifrost/dev/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/maximhq/bifrost&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;The fastest way to build AI applications that never go down&lt;/h2&gt; 
&lt;p&gt;Bifrost is a high-performance AI gateway that unifies access to 23+ providers (OpenAI, Anthropic, AWS Bedrock, Google Vertex, and more) through a single OpenAI-compatible API. Deploy in seconds with zero configuration and get automatic failover, load balancing, semantic caching, and enterprise-grade features.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/maximhq/bifrost/dev/docs/media/getting-started.png&quot; alt=&quot;Get started&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Go from zero to production-ready AI gateway in under a minute.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Start Bifrost Gateway&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install and run locally
npx -y @maximhq/bifrost

# Or use Docker
docker run -p 8080:8080 maximhq/bifrost
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Configure via Web UI&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Open the built-in web interface
open http://localhost:8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Make your first API call&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -X POST http://localhost:8080/v1/chat/completions \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{
    &quot;model&quot;: &quot;openai/gpt-4o-mini&quot;,
    &quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello, Bifrost!&quot;}]
  }&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;That&#39;s it!&lt;/strong&gt; Your AI gateway is running with a web interface for visual configuration, real-time monitoring, and analytics.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Complete Setup Guides:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/setting-up&quot;&gt;Gateway Setup&lt;/a&gt; - HTTP API deployment&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/go-sdk/setting-up&quot;&gt;Go SDK Setup&lt;/a&gt; - Direct integration&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Enterprise Deployments&lt;/h2&gt; 
&lt;p&gt;Bifrost supports enterprise-grade, private deployments for teams running production AI systems at scale. In addition to private networking, custom security controls, and governance, enterprise deployments unlock advanced capabilities including adaptive load balancing, clustering, guardrails, MCP gateway and and other features designed for enterprise-grade scale and reliability.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/maximhq/bifrost/dev/.github/assets/features.png&quot; alt=&quot;Book a Demo&quot; width=&quot;100%&quot; style=&quot;margin-top:5px;&quot; /&gt; 
&lt;div align=&quot;center&quot; style=&quot;display: flex; flex-direction: column;&quot;&gt; 
 &lt;a href=&quot;https://calendly.com/maximai/bifrost-demo&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/maximhq/bifrost/dev/.github/assets/book-demo-button.png&quot; alt=&quot;Book a Demo&quot; width=&quot;170&quot; style=&quot;margin-top:5px;&quot; /&gt; &lt;/a&gt; 
 &lt;div&gt; 
  &lt;a href=&quot;https://www.getmaxim.ai/bifrost/enterprise&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Explore enterprise capabilities&lt;/a&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Key Features&lt;/h2&gt; 
&lt;h3&gt;Core Infrastructure&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/unified-interface&quot;&gt;Unified Interface&lt;/a&gt;&lt;/strong&gt; - Single OpenAI-compatible API for all providers&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/provider-configuration&quot;&gt;Multi-Provider Support&lt;/a&gt;&lt;/strong&gt; - OpenAI, Anthropic, AWS Bedrock, Google Vertex, Azure, Cerebras, Cohere, Mistral, Ollama, Groq, and more&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/fallbacks&quot;&gt;Automatic Fallbacks&lt;/a&gt;&lt;/strong&gt; - Seamless failover between providers and models with zero downtime&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/fallbacks&quot;&gt;Load Balancing&lt;/a&gt;&lt;/strong&gt; - Intelligent request distribution across multiple API keys and providers&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Advanced Features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/mcp&quot;&gt;Model Context Protocol (MCP)&lt;/a&gt;&lt;/strong&gt; - Enable AI models to use external tools (filesystem, web search, databases)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/semantic-caching&quot;&gt;Semantic Caching&lt;/a&gt;&lt;/strong&gt; - Intelligent response caching based on semantic similarity to reduce costs and latency&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/streaming&quot;&gt;Multimodal Support&lt;/a&gt;&lt;/strong&gt; - Support for text,images, audio, and streaming, all behind a common interface.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/enterprise/custom-plugins&quot;&gt;Custom Plugins&lt;/a&gt;&lt;/strong&gt; - Extensible middleware architecture for analytics, monitoring, and custom logic&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/governance&quot;&gt;Governance&lt;/a&gt;&lt;/strong&gt; - Usage tracking, rate limiting, and fine-grained access control&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Enterprise &amp;amp; Security&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/governance&quot;&gt;Budget Management&lt;/a&gt;&lt;/strong&gt; - Hierarchical cost control with virtual keys, teams, and customer budgets&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/sso-with-google-github&quot;&gt;SSO Integration&lt;/a&gt;&lt;/strong&gt; - Google and GitHub authentication support&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/observability&quot;&gt;Observability&lt;/a&gt;&lt;/strong&gt; - Native Prometheus metrics, distributed tracing, and comprehensive logging&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/enterprise/vault-support&quot;&gt;Vault Support&lt;/a&gt;&lt;/strong&gt; - Secure API key management with HashiCorp Vault integration&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Developer Experience&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/setting-up&quot;&gt;Zero-Config Startup&lt;/a&gt;&lt;/strong&gt; - Start immediately with dynamic provider configuration&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/drop-in-replacement&quot;&gt;Drop-in Replacement&lt;/a&gt;&lt;/strong&gt; - Replace OpenAI/Anthropic/GenAI APIs with one line of code&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/what-is-an-integration&quot;&gt;SDK Integrations&lt;/a&gt;&lt;/strong&gt; - Native support for popular AI SDKs with zero code changes&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/provider-configuration&quot;&gt;Configuration Flexibility&lt;/a&gt;&lt;/strong&gt; - Web UI, API-driven, or file-based configuration options&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Repository Structure&lt;/h2&gt; 
&lt;p&gt;Bifrost uses a modular architecture for maximum flexibility:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;bifrost/
├── npx/                 # NPX script for easy installation
├── core/                # Core functionality and shared components
│   ├── providers/       # Provider-specific implementations (OpenAI, Anthropic, etc.)
│   ├── schemas/         # Interfaces and structs used throughout Bifrost
│   └── bifrost.go       # Main Bifrost implementation
├── framework/           # Framework components for data persistence
│   ├── configstore/     # Configuration storages
│   ├── logstore/        # Request logging storages
│   └── vectorstore/     # Vector storages
├── transports/          # HTTP gateway and other interface layers
│   └── bifrost-http/    # HTTP transport implementation
├── ui/                  # Web interface for HTTP gateway
├── plugins/             # Extensible plugin system
│   ├── governance/      # Budget management and access control
│   ├── jsonparser/      # JSON parsing and manipulation utilities
│   ├── logging/         # Request logging and analytics
│   ├── maxim/           # Maxim&#39;s observability integration
│   ├── mocker/          # Mock responses for testing and development
│   ├── semanticcache/   # Intelligent response caching
│   └── telemetry/       # Monitoring and observability
├── docs/                # Documentation and guides
└── tests/               # Comprehensive test suites
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Getting Started Options&lt;/h2&gt; 
&lt;p&gt;Choose the deployment method that fits your needs:&lt;/p&gt; 
&lt;h3&gt;1. Gateway (HTTP API)&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Language-agnostic integration, microservices, and production deployments&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# NPX - Get started in 30 seconds
npx -y @maximhq/bifrost

# Docker - Production ready
docker run -p 8080:8080 -v $(pwd)/data:/app/data maximhq/bifrost
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt; Web UI, real-time monitoring, multi-provider management, zero-config startup&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Learn More:&lt;/strong&gt; &lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/setting-up&quot;&gt;Gateway Setup Guide&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;2. Go SDK&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Direct Go integration with maximum performance and control&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go get github.com/maximhq/bifrost/core
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt; Native Go APIs, embedded deployment, custom middleware integration&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Learn More:&lt;/strong&gt; &lt;a href=&quot;https://docs.getbifrost.ai/quickstart/go-sdk/setting-up&quot;&gt;Go SDK Guide&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;3. Drop-in Replacement&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Migrating existing applications with zero code changes&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;# OpenAI SDK
- base_url = &quot;https://api.openai.com&quot;
+ base_url = &quot;http://localhost:8080/openai&quot;

# Anthropic SDK  
- base_url = &quot;https://api.anthropic.com&quot;
+ base_url = &quot;http://localhost:8080/anthropic&quot;

# Google GenAI SDK
- api_endpoint = &quot;https://generativelanguage.googleapis.com&quot;
+ api_endpoint = &quot;http://localhost:8080/genai&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Learn More:&lt;/strong&gt; &lt;a href=&quot;https://docs.getbifrost.ai/integrations/what-is-an-integration&quot;&gt;Integration Guides&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Performance&lt;/h2&gt; 
&lt;p&gt;Bifrost adds virtually zero overhead to your AI requests. In sustained 5,000 RPS benchmarks, the gateway added only &lt;strong&gt;11 µs&lt;/strong&gt; of overhead per request.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Metric&lt;/th&gt; 
   &lt;th&gt;t3.medium&lt;/th&gt; 
   &lt;th&gt;t3.xlarge&lt;/th&gt; 
   &lt;th&gt;Improvement&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Added latency (Bifrost overhead)&lt;/td&gt; 
   &lt;td&gt;59 µs&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;11 µs&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;-81%&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Success rate @ 5k RPS&lt;/td&gt; 
   &lt;td&gt;100%&lt;/td&gt; 
   &lt;td&gt;100%&lt;/td&gt; 
   &lt;td&gt;No failed requests&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Avg. queue wait time&lt;/td&gt; 
   &lt;td&gt;47 µs&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;1.67 µs&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;-96%&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Avg. request latency (incl. provider)&lt;/td&gt; 
   &lt;td&gt;2.12 s&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;1.61 s&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;-24%&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Key Performance Highlights:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Perfect Success Rate&lt;/strong&gt; - 100% request success rate even at 5k RPS&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Minimal Overhead&lt;/strong&gt; - Less than 15 µs additional latency per request&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Efficient Queuing&lt;/strong&gt; - Sub-microsecond average wait times&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Fast Key Selection&lt;/strong&gt; - ~10 ns to pick weighted API keys&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Complete Benchmarks:&lt;/strong&gt; &lt;a href=&quot;https://docs.getbifrost.ai/benchmarking/getting-started&quot;&gt;Performance Analysis&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Complete Documentation:&lt;/strong&gt; &lt;a href=&quot;https://docs.getbifrost.ai&quot;&gt;https://docs.getbifrost.ai&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Quick Start&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/setting-up&quot;&gt;Gateway Setup&lt;/a&gt; - HTTP API deployment in 30 seconds&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/go-sdk/setting-up&quot;&gt;Go SDK Setup&lt;/a&gt; - Direct Go integration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/quickstart/gateway/provider-configuration&quot;&gt;Provider Configuration&lt;/a&gt; - Multi-provider setup&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/unified-interface&quot;&gt;Multi-Provider Support&lt;/a&gt; - Single API for all providers&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/mcp&quot;&gt;MCP Integration&lt;/a&gt; - External tool calling&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/semantic-caching&quot;&gt;Semantic Caching&lt;/a&gt; - Intelligent response caching&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/fallbacks&quot;&gt;Fallbacks &amp;amp; Load Balancing&lt;/a&gt; - Reliability features&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/features/governance&quot;&gt;Budget Management&lt;/a&gt; - Cost control and governance&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Integrations&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/openai-sdk&quot;&gt;OpenAI SDK&lt;/a&gt; - Drop-in OpenAI replacement&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/anthropic-sdk&quot;&gt;Anthropic SDK&lt;/a&gt; - Drop-in Anthropic replacement&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/bedrock-sdk&quot;&gt;AWS Bedrock SDK&lt;/a&gt; - AWS Bedrock integration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/genai-sdk&quot;&gt;Google GenAI SDK&lt;/a&gt; - Drop-in GenAI replacement&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/litellm-sdk&quot;&gt;LiteLLM SDK&lt;/a&gt; - LiteLLM integration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/integrations/langchain-sdk&quot;&gt;Langchain SDK&lt;/a&gt; - Langchain integration&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Enterprise&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/enterprise/custom-plugins&quot;&gt;Custom Plugins&lt;/a&gt; - Extend functionality&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/enterprise/clustering&quot;&gt;Clustering&lt;/a&gt; - Multi-node deployment&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/enterprise/vault-support&quot;&gt;Vault Support&lt;/a&gt; - Secure key management&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.getbifrost.ai/deployment/docker-setup&quot;&gt;Production Deployment&lt;/a&gt; - Scaling and monitoring&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Need Help?&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://discord.gg/exN5KAydbU&quot;&gt;Join our Discord&lt;/a&gt;&lt;/strong&gt; for community support and discussions.&lt;/p&gt; 
&lt;p&gt;Get help with:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Quick setup assistance and troubleshooting&lt;/li&gt; 
 &lt;li&gt;Best practices and configuration tips&lt;/li&gt; 
 &lt;li&gt;Community discussions and support&lt;/li&gt; 
 &lt;li&gt;Real-time help with integrations&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome contributions of all kinds! See our &lt;a href=&quot;https://docs.getbifrost.ai/contributing/setting-up-repo&quot;&gt;Contributing Guide&lt;/a&gt; for:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Setting up the development environment&lt;/li&gt; 
 &lt;li&gt;Code conventions and best practices&lt;/li&gt; 
 &lt;li&gt;How to submit pull requests&lt;/li&gt; 
 &lt;li&gt;Building and testing locally&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For development requirements and build instructions, see our &lt;a href=&quot;https://docs.getbifrost.ai/contributing/setting-up-repo#development-environment-setup&quot;&gt;Development Setup Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the Apache 2.0 License - see the &lt;a href=&quot;https://raw.githubusercontent.com/maximhq/bifrost/dev/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for details.&lt;/p&gt; 
&lt;p&gt;Built with ❤️ by &lt;a href=&quot;https://github.com/maximhq&quot;&gt;Maxim&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/d8a3abdac98b049578b0f0f59101bc9c2144fb0c54cb408bd0408068fb9bce20/maximhq/bifrost" medium="image" />
      
    </item>
    
    <item>
      <title>looplj/axonhub</title>
      <link>https://github.com/looplj/axonhub</link>
      <description>&lt;p&gt;⚡️ Open-source AI Gateway — Use any SDK to call 100+ LLMs. Built-in failover, load balancing, cost control &amp; end-to-end tracing.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;AxonHub - All-in-one AI Development Platform&lt;/h1&gt; 
 &lt;h3&gt;Use any SDK. Access any model. Zero code changes.&lt;/h3&gt; 
 &lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/16225&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/16225&quot; alt=&quot;looplj%2Faxonhub | 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;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/looplj/axonhub/actions/workflows/test.yml&quot;&gt;&lt;img src=&quot;https://github.com/looplj/axonhub/actions/workflows/test.yml/badge.svg?sanitize=true&quot; alt=&quot;Test Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/looplj/axonhub/actions/workflows/lint.yml&quot;&gt;&lt;img src=&quot;https://github.com/looplj/axonhub/actions/workflows/lint.yml/badge.svg?sanitize=true&quot; alt=&quot;Lint Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://golang.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/go-mod/go-version/looplj/axonhub?logo=go&amp;amp;logoColor=white&quot; alt=&quot;Go Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://docker.com&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docker-ready-2496ED?logo=docker&amp;amp;logoColor=white&quot; alt=&quot;Docker Ready&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/README.md&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/README.zh-CN.md&quot;&gt;中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/README.ja-JP.md&quot;&gt;日本語&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;NOTE&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;This project is maintained by an individual. The author makes no warranties and assumes no liability for risks arising from its use. Please evaluate carefully.&lt;/li&gt; 
  &lt;li&gt;The core scope of this project does not include 2api (subscription-to-API conversion). If you need that, consider other open-source projects focused on 2api.&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📖 Project Introduction&lt;/h2&gt; 
&lt;h3&gt;All-in-one AI Development Platform&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;AxonHub is the AI gateway that lets you switch between model providers without changing a single line of code.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Whether you&#39;re using OpenAI SDK, Anthropic SDK, or any AI SDK, AxonHub transparently translates your requests to work with any supported model provider. No refactoring, no SDK swaps—just change a configuration and you&#39;re done.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What it solves:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🔒 &lt;strong&gt;Vendor lock-in&lt;/strong&gt; - Switch from GPT-4 to Claude or Gemini instantly&lt;/li&gt; 
 &lt;li&gt;🔧 &lt;strong&gt;Integration complexity&lt;/strong&gt; - One API format for 10+ providers&lt;/li&gt; 
 &lt;li&gt;📊 &lt;strong&gt;Observability gap&lt;/strong&gt; - Complete request tracing out of the box&lt;/li&gt; 
 &lt;li&gt;💸 &lt;strong&gt;Cost control&lt;/strong&gt; - Real-time usage tracking and budget management&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/axonhub-architecture-light.svg?sanitize=true&quot; alt=&quot;AxonHub Architecture&quot; width=&quot;700&quot; /&gt; 
&lt;/div&gt; 
&lt;h3&gt;Core Features&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;What You Get&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/looplj/axonhub/unstable/docs/en/api-reference/openai-api.md&quot;&gt;&lt;strong&gt;Any SDK → Any Model&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Use OpenAI SDK to call Claude, or Anthropic SDK to call GPT. Zero code changes.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔍 &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/tracing.md&quot;&gt;&lt;strong&gt;Full Request Tracing&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Complete request timelines with thread-aware observability. Debug faster.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔐 &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/permissions.md&quot;&gt;&lt;strong&gt;Enterprise RBAC&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Fine-grained access control, usage quotas, and data isolation.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;⚡ &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/load-balance.md&quot;&gt;&lt;strong&gt;Smart Load Balancing&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Auto failover in &amp;lt;100ms. Always route to the healthiest channel.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;💰 &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/cost-tracking.md&quot;&gt;&lt;strong&gt;Real-time Cost Tracking&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Per-request cost breakdown. Input, output, cache tokens—all tracked.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📚 Documentation&lt;/h2&gt; 
&lt;p&gt;For detailed technical documentation, API references, architecture design, and more:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;📑 &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/index.md&quot;&gt;Documentation Index&lt;/a&gt;&lt;/strong&gt; - Complete documentation navigation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://deepwiki.com/looplj/axonhub&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/DeepWiki-looplj%2Faxonhub-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==&quot; alt=&quot;DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://zread.ai/looplj/axonhub&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Ask_Zread-_.svg?style=flat&amp;amp;color=00b0aa&amp;amp;labelColor=000000&amp;amp;logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS4zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K&amp;amp;logoColor=ffffff&quot; alt=&quot;zread&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🎯 Demo&lt;/h2&gt; 
&lt;p&gt;Try AxonHub live at our &lt;a href=&quot;https://axonhub.onrender.com&quot;&gt;demo instance&lt;/a&gt;!&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;：The demo instance currently configures Zhipu and OpenRouter free models.&lt;/p&gt; 
&lt;h3&gt;Demo Account&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt;: &lt;a href=&quot;mailto:demo@example.com&quot;&gt;demo@example.com&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Password&lt;/strong&gt;: 12345678&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⭐ Features&lt;/h2&gt; 
&lt;h3&gt;📸 Screenshots&lt;/h3&gt; 
&lt;p&gt;Here are some screenshots of AxonHub in action:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-dashboard.png&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-dashboard.png&quot; alt=&quot;System Dashboard&quot; width=&quot;250&quot; /&gt; &lt;/a&gt; &lt;br /&gt; System Dashboard &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-channels.png&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-channels.png&quot; alt=&quot;Channel Management&quot; width=&quot;250&quot; /&gt; &lt;/a&gt; &lt;br /&gt; Channel Management &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-model-price.png&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-model-price.png&quot; alt=&quot;Model Price&quot; width=&quot;250&quot; /&gt; &lt;/a&gt; &lt;br /&gt; Model Price &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-models.png&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-models.png&quot; alt=&quot;Models&quot; width=&quot;250&quot; /&gt; &lt;/a&gt; &lt;br /&gt; Models &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-trace.png&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-trace.png&quot; alt=&quot;Trace Viewer&quot; width=&quot;250&quot; /&gt; &lt;/a&gt; &lt;br /&gt; Trace Viewer &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-requests.png&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/screenshots/axonhub-requests.png&quot; alt=&quot;Request Monitoring&quot; width=&quot;250&quot; /&gt; &lt;/a&gt; &lt;br /&gt; Request Monitoring &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h3&gt;🚀 API Types&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;API Type&lt;/th&gt; 
   &lt;th&gt;Status&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Document&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Text Generation&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Conversational interface&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/openai-api.md&quot;&gt;OpenAI API&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/anthropic-api.md&quot;&gt;Anthropic API&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/gemini-api.md&quot;&gt;Gemini API&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Image Generation&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Image generation&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/image-generation.md&quot;&gt;Image Generation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Rerank&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Results ranking&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/rerank-api.md&quot;&gt;Rerank API&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Embedding&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Vector embedding generation&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/embedding-api.md&quot;&gt;Embedding API&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Realtime&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;📝 Todo&lt;/td&gt; 
   &lt;td&gt;Live conversation capabilities&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h3&gt;🤖 Supported Providers&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Provider&lt;/th&gt; 
   &lt;th&gt;Status&lt;/th&gt; 
   &lt;th&gt;Supported Models&lt;/th&gt; 
   &lt;th&gt;Compatible APIs&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;OpenAI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;GPT-4, GPT-4o, GPT-5, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini, Embedding, Image Generation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Anthropic&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Claude 3.5, Claude 3.0, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Zhipu AI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;GLM-4.5, GLM-4.5-air, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Moonshot AI (Kimi)&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;kimi-k2, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;DeepSeek&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;DeepSeek-V3.1, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ByteDance Doubao&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;doubao-1.6, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini, Image Generation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Gemini&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Gemini 2.5, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini, Image Generation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Fireworks&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;MiniMax-M2.5, GLM-5, Kimi K2.5, etc.&lt;/td&gt; 
   &lt;td&gt;OpenAI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Jina AI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Embeddings, Reranker, etc.&lt;/td&gt; 
   &lt;td&gt;Jina Embedding, Jina Rerank&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;OpenRouter&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Various models&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini, Image Generation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ZAI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;Image Generation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;AWS Bedrock&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;🔄 Testing&lt;/td&gt; 
   &lt;td&gt;Claude on AWS&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;🔄 Testing&lt;/td&gt; 
   &lt;td&gt;Claude on GCP&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;NanoGPT&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;✅ Done&lt;/td&gt; 
   &lt;td&gt;Various models, Image Gen&lt;/td&gt; 
   &lt;td&gt;OpenAI, Anthropic, Gemini, Image Generation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Quick Start&lt;/h2&gt; 
&lt;h3&gt;30-Second Local Start&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Download and extract (macOS ARM64 example)
curl -sSL https://github.com/looplj/axonhub/releases/latest/download/axonhub_darwin_arm64.tar.gz | tar xz
cd axonhub_*

# Run with SQLite (default)
./axonhub

# Open http://localhost:8090
# First run: Follow the setup wizard to initialize the system (create admin account, password must be at least 6 characters)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;That&#39;s it! Now configure your first AI channel and start calling models through AxonHub.&lt;/p&gt; 
&lt;h3&gt;Zero-Code Migration Example&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Your existing code works without any changes.&lt;/strong&gt; Just point your SDK to AxonHub:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from openai import OpenAI

client = OpenAI(
    base_url=&quot;http://localhost:8090/v1&quot;,  # Point to AxonHub
    api_key=&quot;your-axonhub-api-key&quot;        # Use AxonHub API key
)

# Call Claude using OpenAI SDK!
response = client.chat.completions.create(
    model=&quot;claude-3-5-sonnet&quot;,  # Or gpt-4, gemini-pro, deepseek-chat...
    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello!&quot;}]
)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Switch models by changing one line: &lt;code&gt;model=&quot;gpt-4&quot;&lt;/code&gt; → &lt;code&gt;model=&quot;claude-3-5-sonnet&quot;&lt;/code&gt;. No SDK changes needed.&lt;/p&gt; 
&lt;h3&gt;1-click Deploy to Render&lt;/h3&gt; 
&lt;p&gt;Deploy AxonHub with 1-click on &lt;a href=&quot;https://render.com&quot;&gt;Render&lt;/a&gt; for free.&lt;/p&gt; 
&lt;div&gt; 
 &lt;a href=&quot;https://render.com/deploy?repo=https://github.com/looplj/axonhub&quot;&gt; &lt;img src=&quot;https://render.com/images/deploy-to-render-button.svg?sanitize=true&quot; alt=&quot;Deploy to Render&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Deployment Guide&lt;/h2&gt; 
&lt;h3&gt;💻 Personal Computer Deployment&lt;/h3&gt; 
&lt;p&gt;Perfect for individual developers and small teams. No complex configuration required.&lt;/p&gt; 
&lt;h4&gt;Quick Download &amp;amp; Run&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Download the latest release&lt;/strong&gt; from &lt;a href=&quot;https://github.com/looplj/axonhub/releases&quot;&gt;GitHub Releases&lt;/a&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Choose the appropriate version for your operating system:&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Extract and run&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Extract the downloaded file
unzip axonhub_*.zip
cd axonhub_*

# Add execution permissions (only for Linux/macOS)
chmod +x axonhub

# Run directly - default SQLite database

# Install AxonHub to system
sudo ./install.sh

# Start AxonHub service
./start.sh

# Stop AxonHub service
./stop.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Access the application&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;http://localhost:8090
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h3&gt;🖥️ Server Deployment&lt;/h3&gt; 
&lt;p&gt;For production environments, high availability, and enterprise deployments.&lt;/p&gt; 
&lt;h4&gt;Database Support&lt;/h4&gt; 
&lt;p&gt;AxonHub supports multiple databases to meet different scale deployment needs:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Database&lt;/th&gt; 
   &lt;th&gt;Supported Versions&lt;/th&gt; 
   &lt;th&gt;Recommended Scenario&lt;/th&gt; 
   &lt;th&gt;Auto Migration&lt;/th&gt; 
   &lt;th&gt;Links&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;TiDB Cloud&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Starter&lt;/td&gt; 
   &lt;td&gt;Serverless, Free tier, Auto Scale&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.pingcap.com/tidb-cloud-starter/&quot;&gt;TiDB Cloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;TiDB Cloud&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Dedicated&lt;/td&gt; 
   &lt;td&gt;Distributed deployment, large scale&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.pingcap.com/tidb-cloud-dedicated/&quot;&gt;TiDB Cloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;TiDB&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;V8.0+&lt;/td&gt; 
   &lt;td&gt;Distributed deployment, large scale&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://tidb.io/&quot;&gt;TiDB&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Neon DB&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;Serverless, Free tier, Auto Scale&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://neon.com/&quot;&gt;Neon DB&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;15+&lt;/td&gt; 
   &lt;td&gt;Production environment, medium-large deployments&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;8.0+&lt;/td&gt; 
   &lt;td&gt;Production environment, medium-large deployments&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.mysql.com/&quot;&gt;MySQL&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;SQLite&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;3.0+&lt;/td&gt; 
   &lt;td&gt;Development environment, small deployments&lt;/td&gt; 
   &lt;td&gt;✅ Supported&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.sqlite.org/index.html&quot;&gt;SQLite&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Configuration&lt;/h4&gt; 
&lt;p&gt;AxonHub uses YAML configuration files with environment variable override support:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# config.yml
server:
  port: 8090
  name: &quot;AxonHub&quot;
  debug: false

db:
  dialect: &quot;tidb&quot;
  dsn: &quot;&amp;lt;USER&amp;gt;.root:&amp;lt;PASSWORD&amp;gt;@tcp(gateway01.us-west-2.prod.aws.tidbcloud.com:4000)/axonhub?tls=true&amp;amp;parseTime=true&amp;amp;multiStatements=true&amp;amp;charset=utf8mb4&quot;

log:
  level: &quot;info&quot;
  encoding: &quot;json&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Environment variables:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;AXONHUB_SERVER_PORT=8090
AXONHUB_DB_DIALECT=&quot;tidb&quot;
AXONHUB_DB_DSN=&quot;&amp;lt;USER&amp;gt;.root:&amp;lt;PASSWORD&amp;gt;@tcp(gateway01.us-west-2.prod.aws.tidbcloud.com:4000)/axonhub?tls=true&amp;amp;parseTime=true&amp;amp;multiStatements=true&amp;amp;charset=utf8mb4&quot;
AXONHUB_LOG_LEVEL=info
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For detailed configuration instructions, please refer to &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/deployment/configuration.md&quot;&gt;configuration documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Docker Compose Deployment&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Clone project
git clone https://github.com/looplj/axonhub.git
cd axonhub

# Set environment variables
export AXONHUB_DB_DIALECT=&quot;tidb&quot;
export AXONHUB_DB_DSN=&quot;&amp;lt;USER&amp;gt;.root:&amp;lt;PASSWORD&amp;gt;@tcp(gateway01.us-west-2.prod.aws.tidbcloud.com:4000)/axonhub?tls=true&amp;amp;parseTime=true&amp;amp;multiStatements=true&amp;amp;charset=utf8mb4&quot;

# Start services
docker-compose up -d

# Check status
docker-compose ps
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Helm Kubernetes Deployment&lt;/h4&gt; 
&lt;p&gt;Deploy AxonHub on Kubernetes using the official Helm chart:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Quick installation
git clone https://github.com/looplj/axonhub.git
cd axonhub
helm install axonhub ./deploy/helm

# Production deployment
helm install axonhub ./deploy/helm -f ./deploy/helm/values-production.yaml

# Access AxonHub
kubectl port-forward svc/axonhub 8090:8090
# Visit http://localhost:8090
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Key Configuration Options:&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Parameter&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;axonhub.replicaCount&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Replicas&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;axonhub.dbPassword&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;DB password&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;axonhub_password&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;postgresql.enabled&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Embedded PostgreSQL&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ingress.enabled&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable ingress&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;persistence.enabled&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Data persistence&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For detailed configuration and troubleshooting, see &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/deploy/helm/README.md&quot;&gt;Helm Chart Documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Virtual Machine Deployment&lt;/h4&gt; 
&lt;p&gt;Download the latest release from &lt;a href=&quot;https://github.com/looplj/axonhub/releases&quot;&gt;GitHub Releases&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Extract and run
unzip axonhub_*.zip
cd axonhub_*

# Set environment variables
export AXONHUB_DB_DIALECT=&quot;tidb&quot;
export AXONHUB_DB_DSN=&quot;&amp;lt;USER&amp;gt;.root:&amp;lt;PASSWORD&amp;gt;@tcp(gateway01.us-west-2.prod.aws.tidbcloud.com:4000)/axonhub?tls=true&amp;amp;parseTime=true&amp;amp;multiStatements=true&amp;amp;charset=utf8mb4&quot;

sudo ./install.sh

# Configuration file check
axonhub config check

# Start service
#  For simplicity, we recommend managing AxonHub with the helper scripts:

# Start
./start.sh

# Stop
./stop.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📖 Usage Guide&lt;/h2&gt; 
&lt;h3&gt;Unified API Overview&lt;/h3&gt; 
&lt;p&gt;AxonHub provides a unified API gateway that supports both OpenAI Chat Completions and Anthropic Messages APIs. This means you can:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Use OpenAI API to call Anthropic models&lt;/strong&gt; - Keep using your OpenAI SDK while accessing Claude models&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Use Anthropic API to call OpenAI models&lt;/strong&gt; - Use Anthropic&#39;s native API format with GPT models&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Use Gemini API to call OpenAI models&lt;/strong&gt; - Use Gemini&#39;s native API format with GPT models&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Automatic API translation&lt;/strong&gt; - AxonHub handles format conversion automatically&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zero code changes&lt;/strong&gt; - Your existing OpenAI or Anthropic client code continues to work&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;1. Initial Setup&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Access Management Interface&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;http://localhost:8090
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Configure AI Providers&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Add API keys in the management interface&lt;/li&gt; 
   &lt;li&gt;Test connections to ensure correct configuration&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Create Users and Roles&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Set up permission management&lt;/li&gt; 
   &lt;li&gt;Assign appropriate access permissions&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;2. Channel Configuration&lt;/h3&gt; 
&lt;p&gt;Configure AI provider channels in the management interface. For detailed information on channel configuration, including model mappings, parameter overrides, and troubleshooting, see the &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/channel-management.md&quot;&gt;Channel Configuration Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;3. Model Management&lt;/h3&gt; 
&lt;p&gt;AxonHub provides a flexible model management system that supports mapping abstract models to specific channels and model implementations through Model Associations. This enables:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Unified Model Interface&lt;/strong&gt; - Use abstract model IDs (e.g., &lt;code&gt;gpt-4&lt;/code&gt;, &lt;code&gt;claude-3-opus&lt;/code&gt;) instead of channel-specific names&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Intelligent Channel Selection&lt;/strong&gt; - Automatically route requests to optimal channels based on association rules and load balancing&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Flexible Mapping Strategies&lt;/strong&gt; - Support for precise channel-model matching, regex patterns, and tag-based selection&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Priority-based Fallback&lt;/strong&gt; - Configure multiple associations with priorities for automatic failover&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For comprehensive information on model management, including association types, configuration examples, and best practices, see the &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/model-management.md&quot;&gt;Model Management Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;4. Create API Keys&lt;/h3&gt; 
&lt;p&gt;Create API keys to authenticate your applications with AxonHub. Each API key can be configured with multiple profiles that define:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Model Mappings&lt;/strong&gt; - Transform user-requested models to actual available models using exact match or regex patterns&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Channel Restrictions&lt;/strong&gt; - Limit which channels an API key can use by channel IDs or tags&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Model Access Control&lt;/strong&gt; - Control which models are accessible through a specific profile&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Profile Switching&lt;/strong&gt; - Change behavior on-the-fly by activating different profiles&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For detailed information on API key profiles, including configuration examples, validation rules, and best practices, see the &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/api-key-profiles.md&quot;&gt;API Key Profile Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;5. AI Coding Tools Integration&lt;/h3&gt; 
&lt;p&gt;See the dedicated guides for detailed setup steps, troubleshooting, and tips on combining these tools with AxonHub model profiles:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/opencode-integration.md&quot;&gt;OpenCode Integration Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/claude-code-integration.md&quot;&gt;Claude Code Integration Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/guides/codex-integration.md&quot;&gt;Codex Integration Guide&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6. SDK Usage&lt;/h3&gt; 
&lt;p&gt;For detailed SDK usage examples and code samples, please refer to the API documentation:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/openai-api.md&quot;&gt;OpenAI API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/anthropic-api.md&quot;&gt;Anthropic API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/api-reference/gemini-api.md&quot;&gt;Gemini API&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🛠️ Development Guide&lt;/h2&gt; 
&lt;p&gt;For detailed development instructions, architecture design, and contribution guidelines, please see &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/docs/en/development/development.md&quot;&gt;docs/en/development/development.md&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤝 Acknowledgments&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;🙏 &lt;a href=&quot;https://github.com/musistudio/llms&quot;&gt;musistudio/llms&lt;/a&gt; - LLM transformation framework, source of inspiration&lt;/li&gt; 
 &lt;li&gt;🎨 &lt;a href=&quot;https://github.com/satnaing/shadcn-admin&quot;&gt;satnaing/shadcn-admin&lt;/a&gt; - Admin interface template&lt;/li&gt; 
 &lt;li&gt;🔧 &lt;a href=&quot;https://github.com/99designs/gqlgen&quot;&gt;99designs/gqlgen&lt;/a&gt; - GraphQL code generation&lt;/li&gt; 
 &lt;li&gt;🌐 &lt;a href=&quot;https://github.com/gin-gonic/gin&quot;&gt;gin-gonic/gin&lt;/a&gt; - HTTP framework&lt;/li&gt; 
 &lt;li&gt;🗄️ &lt;a href=&quot;https://github.com/ent/ent&quot;&gt;ent/ent&lt;/a&gt; - ORM framework&lt;/li&gt; 
 &lt;li&gt;🔧 &lt;a href=&quot;https://github.com/air-verse/air&quot;&gt;air-verse/air&lt;/a&gt; - Auto reload Go service&lt;/li&gt; 
 &lt;li&gt;☁️ &lt;a href=&quot;https://render.com&quot;&gt;Render&lt;/a&gt; - Free cloud deployment platform for hosting our demo&lt;/li&gt; 
 &lt;li&gt;🗃️ &lt;a href=&quot;https://www.pingcap.com/tidb-cloud/&quot;&gt;TiDB Cloud&lt;/a&gt; - Serverless database platform for demo deployment&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under multiple licenses (Apache-2.0 and LGPL-3.0). See &lt;a href=&quot;https://raw.githubusercontent.com/looplj/axonhub/unstable/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for the detailed licensing overview and terms.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;strong&gt;AxonHub&lt;/strong&gt; - All-in-one AI Development Platform, making AI development simpler&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/looplj/axonhub&quot;&gt;🏠 Homepage&lt;/a&gt; • &lt;a href=&quot;https://deepwiki.com/looplj/axonhub&quot;&gt;📚 Documentation&lt;/a&gt; • &lt;a href=&quot;https://github.com/looplj/axonhub/issues&quot;&gt;🐛 Issue Feedback&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;Built with ❤️ by the AxonHub team&lt;/p&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/7051cda6bd177105a19a9372c51fd4ee2b5ad91f6c0e7a7949ee73270a3ac370/looplj/axonhub" medium="image" />
      
    </item>
    
    <item>
      <title>harness/harness</title>
      <link>https://github.com/harness/harness</link>
      <description>&lt;p&gt;Harness Open Source is an end-to-end developer platform with Source Control Management, CI/CD Pipelines, Hosted Developer Environments, and Artifact Registries.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Harness&lt;/h1&gt; 
&lt;p&gt;Harness Open Source is an open source development platform packed with the power of code hosting, automated DevOps pipelines, hosted development environments (Gitspaces), and artifact registries.&lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Harness Open source is an open source development platform packed with the power of code hosting, automated DevOps pipelines, Gitspaces, and artifact registries.&lt;/p&gt; 
&lt;h2&gt;Running Harness locally&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The latest publicly released docker image can be found on &lt;a href=&quot;https://hub.docker.com/r/harness/harness&quot;&gt;harness/harness&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;To install Harness yourself, simply run the command below. Once the container is up, you can visit &lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt; in your browser.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  -p 3000:3000 \
  -p 3022:3022 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /tmp/harness:/data \
  --name harness \
  --restart always \
  harness/harness
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The Harness image uses a volume to store the database and repositories. It is highly recommended to use a bind mount or named volume as otherwise all data will be lost once the container is stopped.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;See &lt;a href=&quot;https://developer.harness.io/docs/open-source&quot;&gt;developer.harness.io&lt;/a&gt; to learn how to get the most out of Harness.&lt;/p&gt; 
&lt;h2&gt;Where is Drone?&lt;/h2&gt; 
&lt;p&gt;Harness Open Source represents a massive investment in the next generation of Drone. Where Drone focused solely on continuous integration, Harness adds source code hosting, developer environments (gitspaces), and artifact registries; providing teams with an end-to-end, open source DevOps platform.&lt;/p&gt; 
&lt;p&gt;The goal is for Harness to eventually be at full parity with Drone in terms of pipeline capabilities, allowing users to seamlessly migrate from Drone to Harness.&lt;/p&gt; 
&lt;p&gt;But, we expect this to take some time, which is why we took a snapshot of Drone as a feature branch &lt;a href=&quot;https://github.com/harness/harness/tree/drone&quot;&gt;drone&lt;/a&gt; (&lt;a href=&quot;https://github.com/harness/harness/raw/drone/.github/readme.md&quot;&gt;README&lt;/a&gt;) so it can continue development.&lt;/p&gt; 
&lt;p&gt;As for Harness, the development is taking place on the &lt;a href=&quot;https://github.com/harness/harness/tree/main&quot;&gt;main&lt;/a&gt; branch.&lt;/p&gt; 
&lt;p&gt;For more information on Harness, please visit &lt;a href=&quot;https://developer.harness.io/&quot;&gt;developer.harness.io&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For more information on Drone, please visit &lt;a href=&quot;https://www.drone.io/&quot;&gt;drone.io&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Harness Open Source Development&lt;/h2&gt; 
&lt;h3&gt;Pre-Requisites&lt;/h3&gt; 
&lt;p&gt;Install the latest stable version of Node and Go version 1.20 or higher, and then install the below Go programs. Ensure the GOPATH &lt;a href=&quot;https://go.dev/doc/gopath_code#GOPATH&quot;&gt;bin directory&lt;/a&gt; is added to your PATH.&lt;/p&gt; 
&lt;p&gt;Install protobuf&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check if you&#39;ve already installed protobuf &lt;code&gt;protoc --version&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;If your version is different than v3.21.11, run &lt;code&gt;brew unlink protobuf&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Get v3.21.11 &lt;code&gt;curl -s https://raw.githubusercontent.com/Homebrew/homebrew-core/9de8de7a533609ebfded833480c1f7c05a3448cb/Formula/protobuf.rb &amp;gt; /tmp/protobuf.rb&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Install it &lt;code&gt;brew install /tmp/protobuf.rb&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Check out your version &lt;code&gt;protoc --version&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Install protoc-gen-go and protoc-gen-go-rpc:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Install protoc-gen-go v1.28.1 &lt;code&gt;go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1&lt;/code&gt; (Note that this will install a binary in $GOBIN so make sure $GOBIN is in your $PATH)&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install protoc-gen-go-grpc v1.2.0 &lt;code&gt;go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ make dep
$ make tools
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Build&lt;/h3&gt; 
&lt;p&gt;First step is to build the user interface artifacts:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ pushd web
$ yarn install
$ yarn build
$ popd
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After that, you can build the Harness binary:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ make build
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Run&lt;/h3&gt; 
&lt;p&gt;This project supports all operating systems and architectures supported by Go. This means you can build and run the system on your machine; docker containers are not required for local development and testing.&lt;/p&gt; 
&lt;p&gt;To start the server at &lt;code&gt;localhost:3000&lt;/code&gt;, simply run the following command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gitness server .local.env
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Docker Configuration for Pipelines&lt;/h3&gt; 
&lt;p&gt;Harness pipelines run inside Docker containers. The application automatically negotiates the Docker API version with your Docker daemon, so it works with various Docker versions including Docker Desktop, Rancher Desktop, Colima, and native Docker on Linux.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Docker Socket Location&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;By default, Harness expects the Docker socket at &lt;code&gt;/var/run/docker.sock&lt;/code&gt;. If you&#39;re using an alternative Docker runtime, you may need to configure the socket location:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Runtime&lt;/th&gt; 
   &lt;th&gt;Socket Location&lt;/th&gt; 
   &lt;th&gt;Configuration&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Docker Desktop&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Works by default&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Rancher Desktop&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.rd/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create symlink or set &lt;code&gt;GITNESS_DOCKER_HOST&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Colima&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.colima/default/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create symlink or set &lt;code&gt;GITNESS_DOCKER_HOST&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Linux (native)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Works by default&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Option 1: Create a symlink (recommended)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# For Rancher Desktop
sudo ln -sf ~/.rd/docker.sock /var/run/docker.sock

# For Colima
sudo ln -sf ~/.colima/default/docker.sock /var/run/docker.sock
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Option 2: Set environment variable&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Add to your &lt;code&gt;.local.env&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# For Rancher Desktop
GITNESS_DOCKER_HOST=unix:///Users/&amp;lt;username&amp;gt;/.rd/docker.sock

# For Colima
GITNESS_DOCKER_HOST=unix:///Users/&amp;lt;username&amp;gt;/.colima/default/docker.sock
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Pinning Docker API Version&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The application automatically negotiates the API version with your Docker daemon. If you need to pin a specific version (e.g., for compatibility testing), you can set:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GITNESS_DOCKER_API_VERSION=1.45
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Auto-Generate Harness API Client used by UI using Swagger&lt;/h3&gt; 
&lt;p&gt;Please make sure to update the autogenerated client code used by the UI when adding new rest APIs.&lt;/p&gt; 
&lt;p&gt;To regenerate the code, please execute the following steps:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Regenerate swagger with latest Harness binary &lt;code&gt;./gitness swagger &amp;gt; web/src/services/code/swagger.yaml&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;navigate to the &lt;code&gt;web&lt;/code&gt; folder and run &lt;code&gt;yarn services&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The latest API changes should now be reflected in &lt;code&gt;web/src/services/code/index.tsx&lt;/code&gt;&lt;/p&gt; 
&lt;h1&gt;Run Registry Conformance Tests&lt;/h1&gt; 
&lt;pre&gt;&lt;code&gt;make conformance-test
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For running conformance tests with existing running service, use:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;make hot-conformance-test
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;User Interface&lt;/h2&gt; 
&lt;p&gt;This project includes a full user interface for interacting with the system. When you run the application, you can access the user interface by navigating to &lt;code&gt;http://localhost:3000&lt;/code&gt; in your browser.&lt;/p&gt; 
&lt;h2&gt;REST API&lt;/h2&gt; 
&lt;p&gt;This project includes a swagger specification. When you run the application, you can access the swagger specification by navigating to &lt;code&gt;http://localhost:3000/swagger&lt;/code&gt; in your browser (for raw yaml see &lt;code&gt;http://localhost:3000/openapi.yaml&lt;/code&gt;). For registry endpoints, currently swagger is located on different endpoint &lt;code&gt;http://localhost:3000/registry/swagger/&lt;/code&gt; (for raw json see &lt;code&gt;http://localhost:3000/registry/swagger.json&lt;/code&gt;). These will be later moved to the main swagger endpoint.&lt;/p&gt; 
&lt;p&gt;For testing, it&#39;s simplest to just use the cli to create a token (this requires Harness server to run):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# LOGIN (user: admin, pw: changeit)
$ ./gitness login

# GENERATE PAT (1 YEAR VALIDITY)
$ ./gitness user pat &quot;my-pat-uid&quot; 2592000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The command outputs a valid PAT that has been granted full access as the user. The token can then be send as part of the &lt;code&gt;Authorization&lt;/code&gt; header with Postman or curl:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ curl http://localhost:3000/api/v1/user \
-H &quot;Authorization: Bearer $TOKEN&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;CLI&lt;/h2&gt; 
&lt;p&gt;This project includes VERY basic command line tools for development and running the service. Please remember that you must start the server before you can execute commands.&lt;/p&gt; 
&lt;p&gt;For a full list of supported operations, please see&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ ./gitness --help
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Refer to &lt;a href=&quot;https://github.com/harness/harness/raw/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Apache License 2.0, see &lt;a href=&quot;https://github.com/harness/harness/raw/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/ac0a17624dd120d476a36b059de9bf85c774fc5fe518d2c65f01dd70a6bb8c82/harness/harness" medium="image" />
      
    </item>
    
    <item>
      <title>CJackHwang/ds2api</title>
      <link>https://github.com/CJackHwang/ds2api</link>
      <description>&lt;p&gt;DeepSeek-Compatible Middleware Interface: A technical exploration project in Go, focusing on high-concurrency protocol adaptation. It serves as a reference implementation for converting diverse web protocols into standardized formats.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/webui/public/ds2api-favicon.svg?sanitize=true&quot; width=&quot;128&quot; height=&quot;128&quot; alt=&quot;DS2API icon&quot; /&gt; &lt;/p&gt; 
&lt;h1&gt;DS2API&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/24508&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/24508&quot; alt=&quot;CJackHwang%2Fds2api | 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;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/CJackHwang/ds2api.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/stars/CJackHwang/ds2api.svg?sanitize=true&quot; alt=&quot;Stars&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/forks/CJackHwang/ds2api.svg?sanitize=true&quot; alt=&quot;Forks&quot; /&gt; &lt;a href=&quot;https://github.com/CJackHwang/ds2api/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/CJackHwang/ds2api?display_name=tag&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docker-ready-blue.svg?sanitize=true&quot; alt=&quot;Docker&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://zeabur.com/templates/L4CFHP&quot;&gt;&lt;img src=&quot;https://zeabur.com/button.svg?sanitize=true&quot; alt=&quot;Deploy on Zeabur&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://vercel.com/new/clone?repository-url=https://github.com/CJackHwang/ds2api&quot;&gt;&lt;img src=&quot;https://vercel.com/button&quot; alt=&quot;Deploy with Vercel&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;语言 / Language: &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/README.MD&quot;&gt;中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/README.en.md&quot;&gt;English&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;将 DeepSeek Web 对话能力转换为 OpenAI、Claude 与 Gemini 兼容 API。核心后端以 &lt;strong&gt;Go&lt;/strong&gt; 实现，Vercel 流式桥接额外使用少量 Node Runtime，前端为 React WebUI 管理台（源码在 &lt;code&gt;webui/&lt;/code&gt;，部署时自动构建到 &lt;code&gt;static/admin&lt;/code&gt;）。&lt;/p&gt; 
&lt;p&gt;文档入口：&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/README.md&quot;&gt;文档导航&lt;/a&gt; / &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/ARCHITECTURE.md&quot;&gt;架构说明&lt;/a&gt; / &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/API.md&quot;&gt;接口文档&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;【感谢Linux.do社区及GitHub社区各位开发者对项目的支持与贡献】&lt;/p&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://www.star-history.com/?repos=cjackhwang%2Fds2api&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=cjackhwang/ds2api&amp;amp;type=date&amp;amp;theme=dark&amp;amp;legend=top-left&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/chart?repos=cjackhwang/ds2api&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/chart?repos=cjackhwang/ds2api&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;重要免责声明&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;本仓库仅供学习、研究、个人实验和内部验证使用，不提供任何形式的商业授权、适用性保证或结果保证。&lt;/p&gt; 
 &lt;p&gt;作者及仓库维护者不对因使用、修改、分发、部署或依赖本项目而产生的任何直接或间接损失、账号封禁、数据丢失、法律风险或第三方索赔负责。&lt;/p&gt; 
 &lt;p&gt;请勿将本项目用于违反服务条款、协议、法律法规或平台规则的场景。商业使用前请自行确认 &lt;code&gt;LICENSE&lt;/code&gt;、相关协议以及你是否获得了作者的书面许可。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;目录&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%9E%B6%E6%9E%84%E6%A6%82%E8%A7%88%E6%91%98%E8%A6%81&quot;&gt;架构概览（摘要）&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%A0%B8%E5%BF%83%E8%83%BD%E5%8A%9B&quot;&gt;核心能力&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E5%B9%B3%E5%8F%B0%E5%85%BC%E5%AE%B9%E7%9F%A9%E9%98%B5&quot;&gt;平台兼容矩阵&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%A8%A1%E5%9E%8B%E6%94%AF%E6%8C%81&quot;&gt;模型支持&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#openai-%E6%8E%A5%E5%8F%A3get-v1models&quot;&gt;OpenAI 接口&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#claude-%E6%8E%A5%E5%8F%A3get-anthropicv1models&quot;&gt;Claude 接口&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#gemini-%E6%8E%A5%E5%8F%A3&quot;&gt;Gemini 接口&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B&quot;&gt;快速开始&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%96%B9%E5%BC%8F%E4%B8%80%E4%B8%8B%E8%BD%BD-release-%E6%9E%84%E5%BB%BA%E5%8C%85&quot;&gt;方式一：下载 Release 构建包&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%96%B9%E5%BC%8F%E4%BA%8Cdocker-%E8%BF%90%E8%A1%8C&quot;&gt;方式二：Docker 运行&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%96%B9%E5%BC%8F%E4%B8%89vercel-%E9%83%A8%E7%BD%B2&quot;&gt;方式三：Vercel 部署&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%96%B9%E5%BC%8F%E5%9B%9B%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C&quot;&gt;方式四：本地源码运行&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E&quot;&gt;配置说明&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E9%89%B4%E6%9D%83%E6%A8%A1%E5%BC%8F&quot;&gt;鉴权模式&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E5%B9%B6%E5%8F%91%E6%A8%A1%E5%9E%8B&quot;&gt;并发模型&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#tool-call-%E9%80%82%E9%85%8D&quot;&gt;Tool Call 适配&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%E6%8A%93%E5%8C%85%E5%B7%A5%E5%85%B7&quot;&gt;本地开发抓包工具&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%96%87%E6%A1%A3%E7%B4%A2%E5%BC%95&quot;&gt;文档索引&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E6%B5%8B%E8%AF%95&quot;&gt;测试&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#release-%E8%87%AA%E5%8A%A8%E6%9E%84%E5%BB%BAgithub-actions&quot;&gt;Release 自动构建（GitHub Actions）&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E&quot;&gt;免责声明&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;架构概览（摘要）&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
    Client[&quot;🖥️ 客户端 / SDK\n(OpenAI / Claude / Gemini)&quot;]
    Upstream[&quot;☁️ DeepSeek API&quot;]

    subgraph DS2API[&quot;DS2API 4.x（模块化 HTTP surface + PromptCompat 内核）&quot;]
        Router[&quot;chi Router + 中间件\n(RequestID / RealIP / Logger / Recoverer / CORS)&quot;]

        subgraph HTTP[&quot;HTTP API surface&quot;]
            OA[&quot;OpenAI\nchat / responses / files / embeddings&quot;]
            CA[&quot;Claude\n/anthropic/* + /v1/messages&quot;]
            GA[&quot;Gemini\n/v1beta/models/* + /v1/models/*&quot;]
            Admin[&quot;Admin API\n资源子包&quot;]
            WebUI[&quot;WebUI\n/admin（静态托管）&quot;]
            Vercel[&quot;Vercel Node Stream\n/v1/chat/completions&quot;]
        end

        subgraph Runtime[&quot;运行时核心能力&quot;]
            Compat[&quot;PromptCompat\n(API -&amp;gt; 网页纯文本上下文)&quot;]
            Completion[&quot;Completion Runtime\n(Session / PoW / Completion)&quot;]
            Turn[&quot;AssistantTurn\n(输出语义归一)&quot;]
            Auth[&quot;Auth Resolver\n(API key / bearer / x-goog-api-key)&quot;]
            Pool[&quot;Account Pool + Queue\n(并发槽位 + 等待队列)&quot;]
            DSClient[&quot;DeepSeek Client\n(Session / Auth / Completion / Files)&quot;]
            Pow[&quot;PoW 实现\n(纯 Go)&quot;]
            Tool[&quot;Tool Sieve\n(Go/Node 语义对齐)&quot;]
            History[&quot;Current Input File\n(DS2API_HISTORY.txt)&quot;]
        end
    end

    Client --&amp;gt; Router
    Router --&amp;gt; OA &amp;amp; CA &amp;amp; GA
    Router --&amp;gt; Admin
    Router --&amp;gt; WebUI
    Router --&amp;gt; Vercel

    OA --&amp;gt; Compat
    CA &amp;amp; GA --&amp;gt; Compat
    Compat --&amp;gt; Completion
    Completion -.完整上下文.-&amp;gt; History
    Completion --&amp;gt; Turn
    Vercel -.Go prepare.-&amp;gt; Completion
    Vercel -.Node SSE.-&amp;gt; Tool
    Completion --&amp;gt; Auth
    Completion -.账号轮询.-&amp;gt; Pool
    Completion -.工具调用解析.-&amp;gt; Tool
    Completion -.PoW 计算.-&amp;gt; Pow
    Auth --&amp;gt; DSClient
    DSClient --&amp;gt; Upstream
    Upstream --&amp;gt; DSClient
    Turn --&amp;gt; Client
    Vercel --&amp;gt; Client
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;详细架构拆分与目录职责见 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/ARCHITECTURE.md&quot;&gt;docs/ARCHITECTURE.md&lt;/a&gt;。&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;后端&lt;/strong&gt;：Go（&lt;code&gt;cmd/ds2api/&lt;/code&gt;、&lt;code&gt;api/&lt;/code&gt;、&lt;code&gt;internal/&lt;/code&gt;），不依赖 Python 运行时&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;前端&lt;/strong&gt;：React 管理台（&lt;code&gt;webui/&lt;/code&gt;），运行时托管静态构建产物&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;部署&lt;/strong&gt;：本地运行、Docker、Vercel Serverless、Linux systemd&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;核心能力&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;能力&lt;/th&gt; 
   &lt;th&gt;说明&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OpenAI 兼容&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GET /v1/models&lt;/code&gt;、&lt;code&gt;GET /v1/models/{id}&lt;/code&gt;、&lt;code&gt;POST /v1/chat/completions&lt;/code&gt;、&lt;code&gt;POST /v1/responses&lt;/code&gt;、&lt;code&gt;GET /v1/responses/{response_id}&lt;/code&gt;、&lt;code&gt;POST /v1/embeddings&lt;/code&gt;、&lt;code&gt;POST /v1/files&lt;/code&gt;、&lt;code&gt;GET /v1/files/{file_id}&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude 兼容&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GET /anthropic/v1/models&lt;/code&gt;、&lt;code&gt;POST /anthropic/v1/messages&lt;/code&gt;、&lt;code&gt;POST /anthropic/v1/messages/count_tokens&lt;/code&gt;（及快捷路径 &lt;code&gt;/v1/messages&lt;/code&gt;、&lt;code&gt;/messages&lt;/code&gt;）&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Gemini 兼容&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;POST /v1beta/models/{model}:generateContent&lt;/code&gt;、&lt;code&gt;POST /v1beta/models/{model}:streamGenerateContent&lt;/code&gt;（及 &lt;code&gt;/v1/models/{model}:*&lt;/code&gt; 路径）&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ollama 兼容&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GET /api/version&lt;/code&gt;、&lt;code&gt;GET /api/tags&lt;/code&gt;、&lt;code&gt;POST /api/show&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;统一 CORS 兼容&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/v1/*&lt;/code&gt;、&lt;code&gt;/anthropic/*&lt;/code&gt;、&lt;code&gt;/v1beta/models/*&lt;/code&gt;、&lt;code&gt;/api/*&lt;/code&gt;、&lt;code&gt;/admin/*&lt;/code&gt; 统一走同一套 CORS 策略；Vercel 上 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 的 Node Runtime 也对齐相同放行规则，尽量减少第三方预检请求头限制&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;多账号轮询&lt;/td&gt; 
   &lt;td&gt;自动 token 刷新、邮箱/手机号双登录方式&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;并发队列控制&lt;/td&gt; 
   &lt;td&gt;每账号 in-flight 上限 + 等待队列，动态计算建议并发值&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DeepSeek PoW&lt;/td&gt; 
   &lt;td&gt;纯 Go 高性能实现（DeepSeekHashV1），毫秒级响应&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Tool Calling&lt;/td&gt; 
   &lt;td&gt;防泄漏处理：非代码块高置信特征识别、&lt;code&gt;delta.tool_calls&lt;/code&gt; 早发、结构化增量输出&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Admin API&lt;/td&gt; 
   &lt;td&gt;配置管理、运行时设置热更新、代理管理、账号测试 / 批量测试、会话清理、导入导出、Vercel 同步、版本检查&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;WebUI 管理台&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/admin&lt;/code&gt; 单页应用（中英文双语、深色模式，支持查看服务器端对话记录）&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;运维探针&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GET /healthz&lt;/code&gt;（存活）、&lt;code&gt;GET /readyz&lt;/code&gt;（就绪）&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;OpenAI &lt;code&gt;/v1/*&lt;/code&gt; 仍是推荐的规范路径；同时支持 &lt;code&gt;/models&lt;/code&gt;、&lt;code&gt;/chat/completions&lt;/code&gt;、&lt;code&gt;/responses&lt;/code&gt;、&lt;code&gt;/embeddings&lt;/code&gt;、&lt;code&gt;/files&lt;/code&gt;、&lt;code&gt;/files/{file_id}&lt;/code&gt; 等根路径快捷路由，方便只配置 DS2API 根地址的第三方客户端。&lt;/p&gt; 
&lt;h2&gt;平台兼容矩阵&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;级别&lt;/th&gt; 
   &lt;th&gt;平台&lt;/th&gt; 
   &lt;th&gt;当前状态&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;P0&lt;/td&gt; 
   &lt;td&gt;Codex CLI/SDK（&lt;code&gt;wire_api=chat&lt;/code&gt; / &lt;code&gt;wire_api=responses&lt;/code&gt;）&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;P0&lt;/td&gt; 
   &lt;td&gt;OpenAI SDK（JS/Python，chat + responses）&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;P0&lt;/td&gt; 
   &lt;td&gt;Vercel AI SDK（openai-compatible）&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;P0&lt;/td&gt; 
   &lt;td&gt;Anthropic SDK（messages）&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;P0&lt;/td&gt; 
   &lt;td&gt;Google Gemini SDK（generateContent）&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;P1&lt;/td&gt; 
   &lt;td&gt;LangChain / LlamaIndex / OpenWebUI（OpenAI 兼容接入）&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;模型支持&lt;/h2&gt; 
&lt;h3&gt;OpenAI 接口（&lt;code&gt;GET /v1/models&lt;/code&gt;）&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;模型类型&lt;/th&gt; 
   &lt;th&gt;模型 ID&lt;/th&gt; 
   &lt;th&gt;thinking&lt;/th&gt; 
   &lt;th&gt;search&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;default&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;默认开启，可由请求参数控制&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;default&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;永久关闭，不受请求参数影响&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;expert&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;默认开启，可由请求参数控制&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;expert&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-pro-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;永久关闭，不受请求参数影响&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;default&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash-search&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;默认开启，可由请求参数控制&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;default&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash-search-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;永久关闭，不受请求参数影响&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;expert&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-pro-search&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;默认开启，可由请求参数控制&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;expert&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-pro-search-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;永久关闭，不受请求参数影响&lt;/td&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;vision&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-vision&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;默认开启，可由请求参数控制&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;vision&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-vision-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;永久关闭，不受请求参数影响&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;除原生模型外，也支持常见 alias 输入（如 &lt;code&gt;gpt-4.1&lt;/code&gt;、&lt;code&gt;gpt-5&lt;/code&gt;、&lt;code&gt;gpt-5-codex&lt;/code&gt;、&lt;code&gt;o3&lt;/code&gt;、&lt;code&gt;claude-*&lt;/code&gt;、&lt;code&gt;gemini-*&lt;/code&gt; 等），但 &lt;code&gt;/v1/models&lt;/code&gt; 返回的是规范化后的 DeepSeek 原生模型 ID。若 alias 名本身追加 &lt;code&gt;-nothinking&lt;/code&gt; 后缀，也会映射到对应的强制关思考模型。完整 alias 行为以 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/API.md#%E6%A8%A1%E5%9E%8B-alias-%E8%A7%A3%E6%9E%90%E7%AD%96%E7%95%A5&quot;&gt;API.md&lt;/a&gt; 和 &lt;code&gt;config.example.json&lt;/code&gt; 为准。 当前上游视觉模型只暴露 &lt;code&gt;vision&lt;/code&gt; 通道，不提供独立的联网搜索视觉变体。&lt;/p&gt; 
&lt;h3&gt;Claude 接口（&lt;code&gt;GET /anthropic/v1/models&lt;/code&gt;）&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;当前常用模型&lt;/th&gt; 
   &lt;th&gt;默认映射&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;claude-sonnet-4-6&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;claude-sonnet-4-6-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash-nothinking&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;claude-haiku-4-5&lt;/code&gt;（兼容 &lt;code&gt;claude-3-5-haiku-latest&lt;/code&gt;）&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;claude-haiku-4-5-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-flash-nothinking&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;claude-opus-4-6&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;claude-opus-4-6-nothinking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deepseek-v4-pro-nothinking&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;可通过配置中的 &lt;code&gt;model_aliases&lt;/code&gt; 覆盖映射关系；若请求模型名带 &lt;code&gt;-nothinking&lt;/code&gt;，会在最终映射结果上强制追加无思考语义。 &lt;code&gt;/anthropic/v1/models&lt;/code&gt; 除上述主别名外，还会返回 Claude 4.x snapshots、3.x 历史模型 ID 与常见 alias，便于旧客户端直接兼容。&lt;/p&gt; 
&lt;h4&gt;Claude Code 接入避坑（实测）&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 推荐直接指向 DS2API 根地址（例如 &lt;code&gt;http://127.0.0.1:5001&lt;/code&gt;），Claude Code 会请求 &lt;code&gt;/v1/messages?beta=true&lt;/code&gt;。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; 需要与 &lt;code&gt;config.json&lt;/code&gt; 中 &lt;code&gt;keys&lt;/code&gt; 一致；建议同时保留常规 key 与 &lt;code&gt;sk-ant-*&lt;/code&gt; 形态 key，兼容不同客户端校验习惯。&lt;/li&gt; 
 &lt;li&gt;若系统设置了代理，建议对 DS2API 地址配置 &lt;code&gt;NO_PROXY=127.0.0.1,localhost,&amp;lt;你的主机IP&amp;gt;&lt;/code&gt;，避免本地回环请求被代理拦截。&lt;/li&gt; 
 &lt;li&gt;如遇“工具调用输出成文本、未执行”问题，请优先检查模型输出是否为推荐的半角管道符 DSML 工具块：&lt;code&gt;&amp;lt;|DSML|tool_calls&amp;gt;&amp;lt;|DSML|invoke name=&quot;...&quot;&amp;gt;&amp;lt;|DSML|parameter name=&quot;...&quot;&amp;gt;...&lt;/code&gt;。兼容层也接受旧式 canonical XML：&lt;code&gt;&amp;lt;tool_calls&amp;gt;&amp;lt;invoke name=&quot;...&quot;&amp;gt;&amp;lt;parameter name=&quot;...&quot;&amp;gt;...&lt;/code&gt;；旧式 &lt;code&gt;&amp;lt;tools&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;tool_call&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;tool_name&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;param&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;function_call&amp;gt;&lt;/code&gt;、&lt;code&gt;tool_use&lt;/code&gt; 或纯 JSON &lt;code&gt;tool_calls&lt;/code&gt; 片段不会执行，会作为普通文本处理。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Gemini 接口&lt;/h3&gt; 
&lt;p&gt;Gemini 适配器将模型名通过 &lt;code&gt;model_aliases&lt;/code&gt; 或内置精确 alias 映射到 DeepSeek 原生模型（覆盖 &lt;code&gt;gemini-2.5-*&lt;/code&gt;、&lt;code&gt;gemini-3*&lt;/code&gt;、&lt;code&gt;gemini-pro-vision&lt;/code&gt; 等常见名称），支持 &lt;code&gt;generateContent&lt;/code&gt; 和 &lt;code&gt;streamGenerateContent&lt;/code&gt; 两种调用方式，并完整支持 Tool Calling（&lt;code&gt;functionDeclarations&lt;/code&gt; → &lt;code&gt;functionCall&lt;/code&gt; 输出）。若 Gemini 模型名带 &lt;code&gt;-nothinking&lt;/code&gt; 后缀，例如 &lt;code&gt;gemini-2.5-pro-nothinking&lt;/code&gt;，会映射到对应的强制关闭思考模型。&lt;/p&gt; 
&lt;h2&gt;快速开始&lt;/h2&gt; 
&lt;h3&gt;部署方式优先级建议&lt;/h3&gt; 
&lt;p&gt;推荐按以下顺序选择部署方式：&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;下载 Release 构建包运行&lt;/strong&gt;：最省事，产物已编译完成，最适合大多数用户。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Docker / GHCR 镜像部署&lt;/strong&gt;：适合需要容器化、编排或云环境部署。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Vercel 部署&lt;/strong&gt;：适合已有 Vercel 环境且接受其平台约束的场景。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;本地源码运行 / 自行编译&lt;/strong&gt;：适合开发、调试或需要自行修改代码的场景。&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;通用第一步（所有部署方式）&lt;/h3&gt; 
&lt;p&gt;把 &lt;code&gt;config.json&lt;/code&gt; 作为唯一配置源（推荐做法）：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp config.example.json config.json
# 编辑 config.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;后续部署建议：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;本地运行：直接读取 &lt;code&gt;config.json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Docker / Vercel：由 &lt;code&gt;config.json&lt;/code&gt; 生成 &lt;code&gt;DS2API_CONFIG_JSON&lt;/code&gt;（Base64）注入环境变量，也可以直接写原始 JSON&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;WebUI 管理台里的“全量配置模板”也直接复用同一份 &lt;code&gt;config.example.json&lt;/code&gt;，所以更新示例文件后，前端模板会自动保持一致。&lt;/p&gt; 
&lt;h3&gt;方式一：下载 Release 构建包&lt;/h3&gt; 
&lt;p&gt;每次发布 Release 时，GitHub Actions 会自动构建多平台二进制包：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 下载对应平台的压缩包后
tar -xzf ds2api_&amp;lt;tag&amp;gt;_linux_amd64.tar.gz
cd ds2api_&amp;lt;tag&amp;gt;_linux_amd64
cp config.example.json config.json
# 编辑 config.json
./ds2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;方式二：Docker 运行&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. 准备环境变量和配置文件
cp .env.example .env
cp config.example.json config.json

# 2. 编辑 .env（至少设置 DS2API_ADMIN_KEY；如需修改宿主机端口，可额外设置 DS2API_HOST_PORT）
#    DS2API_ADMIN_KEY=请替换为强密码

# 3. 启动
docker-compose up -d

# 4. 查看日志
docker-compose logs -f
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;默认 &lt;code&gt;docker-compose.yml&lt;/code&gt; 会把宿主机 &lt;code&gt;6011&lt;/code&gt; 映射到容器内的 &lt;code&gt;5001&lt;/code&gt;。如果你希望直接对外暴露 &lt;code&gt;5001&lt;/code&gt;，请设置 &lt;code&gt;DS2API_HOST_PORT=5001&lt;/code&gt;（或者手动调整 &lt;code&gt;ports&lt;/code&gt; 配置）。 同时默认把 &lt;code&gt;./config.json&lt;/code&gt; 挂载到容器 &lt;code&gt;/data/config.json&lt;/code&gt;，并设置 &lt;code&gt;DS2API_CONFIG_PATH=/data/config.json&lt;/code&gt;，用于避免 &lt;code&gt;/app&lt;/code&gt; 只读导致运行时 token 持久化失败。 镜像会预创建 &lt;code&gt;/data&lt;/code&gt; 并授权给非 root 的 &lt;code&gt;ds2api&lt;/code&gt; 用户；如果使用单文件 bind mount，请确保宿主机 &lt;code&gt;config.json&lt;/code&gt; 对容器用户可读写，例如 &lt;code&gt;chmod 644 config.json&lt;/code&gt;。&lt;/p&gt; 
&lt;p&gt;更新镜像：&lt;code&gt;docker-compose up -d --build&lt;/code&gt;&lt;/p&gt; 
&lt;h4&gt;Zeabur 一键部署（Dockerfile）&lt;/h4&gt; 
&lt;ol&gt; 
 &lt;li&gt;点击上方 “Deploy on Zeabur” 按钮，一键部署。&lt;/li&gt; 
 &lt;li&gt;部署完成后访问 &lt;code&gt;/admin&lt;/code&gt;，使用 Zeabur 环境变量/模板指引中的 &lt;code&gt;DS2API_ADMIN_KEY&lt;/code&gt; 登录。&lt;/li&gt; 
 &lt;li&gt;在管理台导入/编辑配置（会写入并持久化到 &lt;code&gt;/data/config.json&lt;/code&gt;）。&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Zeabur 首次空卷启动时可以没有 &lt;code&gt;/data/config.json&lt;/code&gt;；DS2API 会先使用空的文件模式配置启动，并在管理台首次保存时创建该文件。&lt;/p&gt; 
&lt;p&gt;不依赖模板手动部署时，在 Zeabur 中选择 GitHub 仓库服务，Root Directory 保持 &lt;code&gt;/&lt;/code&gt;，使用仓库根目录 &lt;code&gt;Dockerfile&lt;/code&gt; 构建；添加持久卷 &lt;code&gt;/data&lt;/code&gt;，设置 &lt;code&gt;PORT=5001&lt;/code&gt;、&lt;code&gt;DS2API_ADMIN_KEY=你的强密钥&lt;/code&gt;、&lt;code&gt;DS2API_CONFIG_PATH=/data/config.json&lt;/code&gt;，然后暴露 HTTP 端口 &lt;code&gt;5001&lt;/code&gt;。更完整步骤见 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.md#%E4%B8%8D%E4%BD%BF%E7%94%A8%E6%A8%A1%E6%9D%BF%E6%89%8B%E5%8A%A8%E9%83%A8%E7%BD%B2&quot;&gt;docs/DEPLOY.md&lt;/a&gt;。&lt;/p&gt; 
&lt;p&gt;说明：Zeabur 使用仓库内 &lt;code&gt;Dockerfile&lt;/code&gt; 直接构建时，不需要额外传入 &lt;code&gt;BUILD_VERSION&lt;/code&gt;；镜像会优先读取该构建参数，未提供时自动回退到仓库根目录的 &lt;code&gt;VERSION&lt;/code&gt; 文件。&lt;/p&gt; 
&lt;h3&gt;方式三：Vercel 部署&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Fork 仓库到自己的 GitHub&lt;/li&gt; 
 &lt;li&gt;在 Vercel 上导入项目&lt;/li&gt; 
 &lt;li&gt;配置环境变量（最少设置 &lt;code&gt;DS2API_ADMIN_KEY&lt;/code&gt;；推荐同时设置 &lt;code&gt;DS2API_CONFIG_JSON&lt;/code&gt;）&lt;/li&gt; 
 &lt;li&gt;部署&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;建议先在仓库目录复制模板并填写：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp config.example.json config.json
# 编辑 config.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;推荐：先本地把 &lt;code&gt;config.json&lt;/code&gt; 转成 Base64，再粘贴到 &lt;code&gt;DS2API_CONFIG_JSON&lt;/code&gt;，避免 JSON 格式错误：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;base64 &amp;lt; config.json | tr -d &#39;\n&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;流式说明&lt;/strong&gt;：OpenAI Chat 流式在 Vercel 上会由 &lt;code&gt;api/chat-stream.js&lt;/code&gt;（Node Runtime）承接，但 &lt;code&gt;vercel.json&lt;/code&gt; 只把规范路径 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 重写到 Node；根路径快捷别名 &lt;code&gt;/chat/completions&lt;/code&gt; 仍走 Go 主链路。鉴权、账号选择、会话/PoW 准备仍由 Go 内部 prepare 接口完成；流式响应（含 &lt;code&gt;tools&lt;/code&gt;）在 Node 侧执行与 Go 对齐的输出组装与防泄漏处理。Vercel 上需要实时流式时请使用 &lt;code&gt;/v1/chat/completions&lt;/code&gt;。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;详细部署说明请参阅 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.md&quot;&gt;部署指南&lt;/a&gt;。&lt;/p&gt; 
&lt;h3&gt;方式四：本地源码运行&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;前置要求&lt;/strong&gt;：Go 1.26+，Node.js &lt;code&gt;20.19+&lt;/code&gt; 或 &lt;code&gt;22.12+&lt;/code&gt;（仅在需要构建 WebUI 时；CI / Docker 构建使用 Node 24）；同时确保 &lt;code&gt;npm&lt;/code&gt; 可用，建议 &lt;code&gt;npm 10+&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. 克隆仓库
git clone https://github.com/CJackHwang/ds2api.git
cd ds2api

# 2. 配置
cp config.example.json config.json
# 编辑 config.json，填入你的 DeepSeek 账号信息和 API key

# 3. 启动
go run ./cmd/ds2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;默认本地访问地址：&lt;code&gt;http://127.0.0.1:5001&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;服务实际绑定：&lt;code&gt;0.0.0.0:5001&lt;/code&gt;，因此同一局域网设备通常也可以通过你的内网 IP 访问。&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;WebUI 自动构建&lt;/strong&gt;：本地首次启动时，若 WebUI 静态目录不存在，会自动尝试执行 &lt;code&gt;npm ci --prefix webui&lt;/code&gt;（仅在缺少依赖时）和 &lt;code&gt;npm run build --prefix webui -- --outDir static/admin --emptyOutDir&lt;/code&gt;（需要本机有 Node.js 和 npm；静态目录可用 &lt;code&gt;DS2API_STATIC_ADMIN_DIR&lt;/code&gt; 覆盖）。你也可以手动构建：&lt;code&gt;./scripts/build-webui.sh&lt;/code&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;配置说明&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;README&lt;/code&gt; 只保留快速入口，完整字段请以 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/config.example.json&quot;&gt;config.example.json&lt;/a&gt; 为模板，并参考 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.md#0-%E5%89%8D%E7%BD%AE%E8%A6%81%E6%B1%82&quot;&gt;部署指南&lt;/a&gt; 与 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/API.md#%E9%85%8D%E7%BD%AE%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5&quot;&gt;API 配置最佳实践&lt;/a&gt;。&lt;/p&gt; 
&lt;p&gt;常用字段：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;keys&lt;/code&gt; / &lt;code&gt;api_keys&lt;/code&gt;：客户端访问密钥，&lt;code&gt;api_keys&lt;/code&gt; 支持 &lt;code&gt;name&lt;/code&gt; 与 &lt;code&gt;remark&lt;/code&gt; 元信息，&lt;code&gt;keys&lt;/code&gt; 继续兼容。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;accounts&lt;/code&gt;：DeepSeek 托管账号，支持 &lt;code&gt;email&lt;/code&gt; 或 &lt;code&gt;mobile&lt;/code&gt; 登录，可配置代理、名称和备注。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;model_aliases&lt;/code&gt;：OpenAI / Claude / Gemini 共用的模型 alias 映射。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;runtime&lt;/code&gt;：账号并发、队列与 token 刷新策略，可通过 Admin Settings 热更新。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;auto_delete.mode&lt;/code&gt;：请求结束后的远端会话清理策略，支持 &lt;code&gt;none&lt;/code&gt; / &lt;code&gt;single&lt;/code&gt; / &lt;code&gt;all&lt;/code&gt;。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;current_input_file&lt;/code&gt;：全局生效的上下文拆分上传策略；默认开启且阈值为 &lt;code&gt;0&lt;/code&gt;，触发时将完整上下文合并上传为 &lt;code&gt;DS2API_HISTORY.txt&lt;/code&gt; 上下文文件。&lt;/li&gt; 
 &lt;li&gt;如果关闭 &lt;code&gt;current_input_file&lt;/code&gt;，请求会直接透传，不上传拆分上下文文件。&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;thinking_injection&lt;/code&gt;：默认开启；在最新 user 消息末尾追加思考增强提示词，提高高强度推理与工具调用前的思考稳定性；&lt;code&gt;prompt&lt;/code&gt; 留空时使用内置默认提示词。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;环境变量完整列表见 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.md&quot;&gt;部署指南&lt;/a&gt;，接口鉴权规则见 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/API.md#%E9%89%B4%E6%9D%83%E8%A7%84%E5%88%99&quot;&gt;API.md&lt;/a&gt;。&lt;/p&gt; 
&lt;h2&gt;鉴权模式&lt;/h2&gt; 
&lt;p&gt;调用业务接口（&lt;code&gt;/v1/*&lt;/code&gt;、&lt;code&gt;/anthropic/*&lt;/code&gt;、Gemini 路由）时支持两种模式：&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;模式&lt;/th&gt; 
   &lt;th&gt;说明&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;托管账号模式&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;Bearer&lt;/code&gt; 或 &lt;code&gt;x-api-key&lt;/code&gt; 传入 &lt;code&gt;config.keys&lt;/code&gt; 中的 key，由服务自动轮询选择账号&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;直通 token 模式&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;传入 token 不在 &lt;code&gt;config.keys&lt;/code&gt; 中时，直接作为 DeepSeek token 使用&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;可选请求头 &lt;code&gt;X-Ds2-Target-Account&lt;/code&gt;：指定使用某个托管账号（值为 email 或 mobile）。 如果指定账号不存在，或者当前管理账号队列已满，请求会返回 &lt;code&gt;429&lt;/code&gt;；当前 &lt;code&gt;429&lt;/code&gt; 不附带 &lt;code&gt;Retry-After&lt;/code&gt; 头。若账号存在但登录/刷新失败，则返回对应的鉴权错误。 未指定目标账号时，如果 completion 因上游 thinking-only 空输出在同账号补偿重试后仍将返回 &lt;code&gt;429 upstream_empty_output&lt;/code&gt;，托管账号模式会自动切到下一个可用账号，新建 session，并用原始 payload 再 fresh retry 一次。 Gemini 路由还可以使用 &lt;code&gt;x-goog-api-key&lt;/code&gt;，或在没有认证头时使用 &lt;code&gt;?key=&lt;/code&gt; / &lt;code&gt;?api_key=&lt;/code&gt; 作为调用方凭据。&lt;/p&gt; 
&lt;h2&gt;并发模型&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;每账号可用并发 = DS2API_ACCOUNT_MAX_INFLIGHT（默认 2）
建议并发值 = 账号数量 × 每账号并发上限
等待队列上限 = DS2API_ACCOUNT_MAX_QUEUE（默认 = 建议并发值）
429 阈值 = in-flight + 等待队列 ≈ 账号数量 × 4
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;当 in-flight 槽位满时，请求进入等待队列，&lt;strong&gt;不会立即 429&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;超出总承载上限后才返回 &lt;code&gt;429 Too Many Requests&lt;/code&gt;，当前响应不附带 &lt;code&gt;Retry-After&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;completion 空输出类 429 会先做同账号补偿重试；托管账号模式还会在最终返回 429 前切到另一个可用账号 fresh retry 一次&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;GET /admin/queue/status&lt;/code&gt; 返回实时并发状态&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Tool Call 适配&lt;/h2&gt; 
&lt;p&gt;当请求中带 &lt;code&gt;tools&lt;/code&gt; 时，DS2API 会做防泄漏处理与结构化转译：&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;只在&lt;strong&gt;非 Markdown 代码上下文&lt;/strong&gt;启用执行型 toolcall 识别（fenced code block 和行内 code span 中的示例默认不触发）&lt;/li&gt; 
 &lt;li&gt;解析层当前把半角管道符 DSML 外壳视为推荐可执行调用：&lt;code&gt;&amp;lt;|DSML|tool_calls&amp;gt;&lt;/code&gt; → &lt;code&gt;&amp;lt;|DSML|invoke name=&quot;...&quot;&amp;gt;&lt;/code&gt; → &lt;code&gt;&amp;lt;|DSML|parameter name=&quot;...&quot;&amp;gt;&lt;/code&gt;；兼容旧式 canonical XML &lt;code&gt;&amp;lt;tool_calls&amp;gt;&lt;/code&gt; → &lt;code&gt;&amp;lt;invoke name=&quot;...&quot;&amp;gt;&lt;/code&gt; → &lt;code&gt;&amp;lt;parameter name=&quot;...&quot;&amp;gt;&lt;/code&gt;，以及若干 DSML 前缀/分隔符漂移。DSML 只是外壳别名，内部仍以 XML 解析语义为准；旧式 &lt;code&gt;&amp;lt;tools&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;tool_call&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;tool_name&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;param&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;function_call&amp;gt;&lt;/code&gt;、&lt;code&gt;tool_use&lt;/code&gt; / antml 变体与纯 JSON &lt;code&gt;tool_calls&lt;/code&gt; 片段都会按普通文本处理，完整但 malformed 的 wrapper 也会作为普通文本释放&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;responses&lt;/code&gt; 流式严格使用官方 item 生命周期事件（&lt;code&gt;response.output_item.*&lt;/code&gt;、&lt;code&gt;response.content_part.*&lt;/code&gt;、&lt;code&gt;response.function_call_arguments.*&lt;/code&gt;）&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;responses&lt;/code&gt; 支持并执行 &lt;code&gt;tool_choice&lt;/code&gt;（&lt;code&gt;auto&lt;/code&gt;/&lt;code&gt;none&lt;/code&gt;/&lt;code&gt;required&lt;/code&gt;/强制函数）；&lt;code&gt;required&lt;/code&gt; 违规时非流式返回 &lt;code&gt;422&lt;/code&gt;，流式返回 &lt;code&gt;response.failed&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;客户端请求哪种协议，就按该协议返回工具调用（OpenAI/Claude/Gemini 各自原生结构）；模型侧优先约束输出规范 XML，再由兼容层转译&lt;/li&gt; 
&lt;/ol&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;说明：当前版本 parser 层以”尽量解析成功”为优先，所有格式合法的 XML 工具调用都会通过，不做工具名 allow-list 过滤。 解析层会保留显式空字符串或纯空白参数；Prompt 会要求模型不要主动输出空参数，缺参/空命令的拒绝应由工具执行侧或客户端 schema 校验负责。&lt;/p&gt; 
 &lt;p&gt;想评估”把工具调用封装成 XML 再输入模型”的方案，可参考：&lt;code&gt;docs/toolcall-semantics.md&lt;/code&gt;。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;本地开发抓包工具&lt;/h2&gt; 
&lt;p&gt;用于定位「responses 思考流/工具调用」等问题。开启后会自动记录最近 N 条 DeepSeek 对话上游请求体与响应体（默认 20 条，超出自动淘汰；单条响应体默认最多记录 5 MB）。&lt;/p&gt; 
&lt;p&gt;启用示例：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;DS2API_DEV_PACKET_CAPTURE=true \
DS2API_DEV_PACKET_CAPTURE_LIMIT=20 \
go run ./cmd/ds2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;查询/清空（需 Admin JWT）：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;GET /admin/dev/captures&lt;/code&gt;：查看抓包列表（最新在前）&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;DELETE /admin/dev/captures&lt;/code&gt;：清空抓包&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;GET /admin/dev/raw-samples/query?q=关键词&amp;amp;limit=20&lt;/code&gt;：按问题关键词查询当前内存抓包，并按 &lt;code&gt;chat_session_id&lt;/code&gt; 归并 &lt;code&gt;completion + continue&lt;/code&gt; 链&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;POST /admin/dev/raw-samples/save&lt;/code&gt;：把命中的某条抓包链保存为 &lt;code&gt;tests/raw_stream_samples/&amp;lt;sample-id&amp;gt;/&lt;/code&gt; 回放样本&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;返回字段包含：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;request_body&lt;/code&gt;：发送给 DeepSeek 的完整请求体&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;response_body&lt;/code&gt;：上游返回的原始流式内容拼接文本&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;response_truncated&lt;/code&gt;：是否触发单条大小截断&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;保存接口支持用 &lt;code&gt;query&lt;/code&gt;、&lt;code&gt;chain_key&lt;/code&gt; 或 &lt;code&gt;capture_id&lt;/code&gt; 选中目标。例如：&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{&quot;query&quot;:&quot;广州天气&quot;,&quot;sample_id&quot;:&quot;gz-weather-from-memory&quot;}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;文档索引&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;文档&lt;/th&gt; 
   &lt;th&gt;说明&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/CJackHwang/ds2api/main/API.md&quot;&gt;API.md&lt;/a&gt; / &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/API.en.md&quot;&gt;API.en.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;API 接口文档（含请求/响应示例）&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.md&quot;&gt;DEPLOY.md&lt;/a&gt; / &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/DEPLOY.en.md&quot;&gt;DEPLOY.en.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;部署指南（本地/Docker/Vercel/systemd）&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; / &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/CONTRIBUTING.en.md&quot;&gt;CONTRIBUTING.en.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;贡献指南&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/TESTING.md&quot;&gt;TESTING.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;测试集使用指南&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;测试&lt;/h2&gt; 
&lt;p&gt;详细测试指南请参阅 &lt;a href=&quot;https://raw.githubusercontent.com/CJackHwang/ds2api/main/docs/TESTING.md&quot;&gt;docs/TESTING.md&lt;/a&gt;。&lt;/p&gt; 
&lt;h3&gt;快速测试命令&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 本地 PR 门禁
./scripts/lint.sh
./tests/scripts/check-refactor-line-gate.sh
./tests/scripts/run-unit-all.sh
npm run build --prefix webui

# 端到端全链路测试（真实账号，生成完整请求/响应日志）
./tests/scripts/run-live.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Release 自动构建（GitHub Actions）&lt;/h2&gt; 
&lt;p&gt;工作流文件：&lt;code&gt;.github/workflows/release-artifacts.yml&lt;/code&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;触发条件&lt;/strong&gt;：默认仅在 GitHub Release &lt;code&gt;published&lt;/code&gt; 时自动触发；也支持在 Actions 页面手动 &lt;code&gt;workflow_dispatch&lt;/code&gt;，并填写 &lt;code&gt;release_tag&lt;/code&gt; 复跑/补发&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;构建产物&lt;/strong&gt;：多平台二进制包（&lt;code&gt;linux/amd64&lt;/code&gt;、&lt;code&gt;linux/arm64&lt;/code&gt;、&lt;code&gt;linux/armv7&lt;/code&gt;、&lt;code&gt;darwin/amd64&lt;/code&gt;、&lt;code&gt;darwin/arm64&lt;/code&gt;、&lt;code&gt;windows/amd64&lt;/code&gt;、&lt;code&gt;windows/arm64&lt;/code&gt;）、Linux Docker 镜像导出包 + &lt;code&gt;sha256sums.txt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;容器镜像发布&lt;/strong&gt;：仅推送到 GHCR（&lt;code&gt;ghcr.io/cjackhwang/ds2api&lt;/code&gt;）&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;每个二进制压缩包包含&lt;/strong&gt;：&lt;code&gt;ds2api&lt;/code&gt; 可执行文件、&lt;code&gt;static/admin&lt;/code&gt;、&lt;code&gt;config.example.json&lt;/code&gt;、&lt;code&gt;.env.example&lt;/code&gt;、&lt;code&gt;README.MD&lt;/code&gt;、&lt;code&gt;README.en.md&lt;/code&gt;、&lt;code&gt;LICENSE&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;免责声明&lt;/h2&gt; 
&lt;p&gt;本项目基于逆向方式实现，仅供学习、研究、个人实验和内部验证使用，不提供任何商业授权、稳定性保证或可用性保证。 作者及仓库维护者不对因使用、修改、分发、部署或依赖本项目而产生的任何直接或间接损失、账号封禁、数据丢失、法律风险或第三方索赔负责。&lt;/p&gt; 
&lt;p&gt;请勿将本项目用于违反服务条款、协议、法律法规或平台规则的场景。商业使用前请自行确认 &lt;code&gt;LICENSE&lt;/code&gt;、相关协议以及你是否获得了作者的书面许可。&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/d6c79ef9223e4e135ddf1877e60ddff94fe36a8cc478effaa35e8ecf1bad3b01/CJackHwang/ds2api" medium="image" />
      
    </item>
    
    <item>
      <title>microsoft/typescript-go</title>
      <link>https://github.com/microsoft/typescript-go</link>
      <description>&lt;p&gt;Staging repo for development of native port of TypeScript&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;TypeScript 7&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://devblogs.microsoft.com/typescript/typescript-native-port/&quot;&gt;Not sure what this is? Read the announcement post!&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Preview&lt;/h2&gt; 
&lt;p&gt;A preview build is available on npm as &lt;a href=&quot;https://www.npmjs.com/package/@typescript/native-preview&quot;&gt;&lt;code&gt;@typescript/native-preview&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;npm install @typescript/native-preview
npx tsgo # Use this as you would tsc.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;A preview VS Code extension is &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=TypeScriptTeam.native-preview&quot;&gt;available on the VS Code marketplace&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;To use this, set this in your VS Code settings:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &quot;js/ts.experimental.useTsgo&quot;: true
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;What Works So Far?&lt;/h2&gt; 
&lt;p&gt;This is still a work in progress and is not yet at full feature parity with TypeScript. Bugs may exist. Please check this list carefully before logging a new issue or assuming an intentional change.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&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;Program creation&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;Same files and module resolution as TS 6.0. Not all resolution modes supported yet.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Parsing/scanning&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;Exact same syntax errors as TS 6.0&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Commandline and &lt;code&gt;tsconfig.json&lt;/code&gt; parsing&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;Done, though &lt;code&gt;tsconfig&lt;/code&gt; errors may not be as helpful.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Type resolution&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;Same types as TS 6.0.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Type checking&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;Same errors, locations, and messages as TS 6.0. Types printback in errors may display differently.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;JavaScript-specific inference and JSDoc&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;Complete, but intentionally lacking some features. Declaration emit differs greatly, intentionally, to be closer to TS declarations.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;JSX&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Declaration emit&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Emit (JS output)&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Watch mode&lt;/td&gt; 
   &lt;td&gt;prototype&lt;/td&gt; 
   &lt;td&gt;Watches files and rebuilds, but no incremental rechecking. Not optimized.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Build mode / project references&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Incremental build&lt;/td&gt; 
   &lt;td&gt;done&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Language service (LSP)&lt;/td&gt; 
   &lt;td&gt;in progress&lt;/td&gt; 
   &lt;td&gt;Nearly all features implemented.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;API&lt;/td&gt; 
   &lt;td&gt;not ready&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Definitions:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;done&lt;/strong&gt; aka &quot;believed done&quot;: We&#39;re not currently aware of any deficits or major work left to do. OK to log bugs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;in progress&lt;/strong&gt;: currently being worked on; some features may work and some might not. OK to log panics, but nothing else please&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;prototype&lt;/strong&gt;: proof-of-concept only; do not log bugs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;not ready&lt;/strong&gt;: either haven&#39;t even started yet, or far enough from ready that you shouldn&#39;t bother messing with it yet&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Other Notes&lt;/h2&gt; 
&lt;p&gt;Long-term, we expect that this repo and its contents will be merged into &lt;code&gt;microsoft/TypeScript&lt;/code&gt;. As a result, the repo and issue tracker for typescript-go will eventually be closed, so treat discussions/issues accordingly.&lt;/p&gt; 
&lt;p&gt;For a list of intentional changes with respect to TypeScript 6.0, see &lt;a href=&quot;http://CHANGES.md&quot;&gt;CHANGES.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit &lt;a href=&quot;https://cla.opensource.microsoft.com&quot;&gt;Contributor License Agreements&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.&lt;/p&gt; 
&lt;p&gt;This project has adopted the &lt;a href=&quot;https://opensource.microsoft.com/codeofconduct/&quot;&gt;Microsoft Open Source Code of Conduct&lt;/a&gt;. For more information see the &lt;a href=&quot;https://opensource.microsoft.com/codeofconduct/faq/&quot;&gt;Code of Conduct FAQ&lt;/a&gt; or contact &lt;a href=&quot;mailto:opencode@microsoft.com&quot;&gt;opencode@microsoft.com&lt;/a&gt; with any additional questions or comments.&lt;/p&gt; 
&lt;h2&gt;Trademarks&lt;/h2&gt; 
&lt;p&gt;This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow &lt;a href=&quot;https://www.microsoft.com/legal/intellectualproperty/trademarks/usage/general&quot;&gt;Microsoft&#39;s Trademark &amp;amp; Brand Guidelines&lt;/a&gt;. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party&#39;s policies.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/e2bc8e430e287bd9794df7e1fb873e0176ea55e8932e0b543a5647effabbc8de/microsoft/typescript-go" medium="image" />
      
    </item>
    
    <item>
      <title>gastownhall/gascity</title>
      <link>https://github.com/gastownhall/gascity</link>
      <description>&lt;p&gt;Orchestration-builder SDK for multi-agent coding workflows&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt;Gas City&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;Composable orchestration infrastructure for multi-agent coding workflows.&lt;/strong&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/gastownhall/gascity/actions/workflows/ci.yml?query=branch%3Amain&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/gastownhall/gascity/ci.yml?branch=main&amp;amp;label=Build&amp;amp;style=for-the-badge&quot; alt=&quot;Build status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/gastownhall/gascity/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/gastownhall/gascity?include_prereleases&amp;amp;style=for-the-badge&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/xHpUGUzZp2&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1462817445562814505?label=Discord&amp;amp;logo=discord&amp;amp;logoColor=white&amp;amp;color=5865F2&amp;amp;style=for-the-badge&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge&quot; alt=&quot;MIT License&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Gas City is an orchestration-builder SDK for multi-agent systems. It extracts the reusable infrastructure from Gas Town into a configurable toolkit with runtime providers, work routing, formulas, orders, health patrol, and a declarative city configuration.&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://blacksmith.sh/&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/images/blacksmith-powered.png&quot; alt=&quot;Powered by Blacksmith&quot; height=&quot;40&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;Coming from Gas Town?&lt;/h2&gt; 
&lt;p&gt;Start with &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/getting-started/coming-from-gastown.md&quot;&gt;Coming from Gas Town?&lt;/a&gt;. It maps Town roles, commands, plugins, convoys, and directory habits onto Gas City&#39;s primitive-first model so experienced Gas Town users can ramp without trying to port the entire Town architecture literally.&lt;/p&gt; 
&lt;h2&gt;What You Get&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Declarative city configuration in &lt;code&gt;city.toml&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Multiple runtime providers: tmux, subprocess, exec, ACP, and Kubernetes&lt;/li&gt; 
 &lt;li&gt;Beads-backed work tracking, formulas, molecules, waits, and mail&lt;/li&gt; 
 &lt;li&gt;A controller/supervisor loop that reconciles desired state to running state&lt;/li&gt; 
 &lt;li&gt;Packs, overrides, and rig-scoped orchestration for multi-project setups&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;p&gt;See the full install guide at &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/getting-started/installation.md&quot;&gt;docs/getting-started/installation.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;p&gt;Gas City requires the following tools on your system. &lt;code&gt;gc init&lt;/code&gt; and &lt;code&gt;gc start&lt;/code&gt; check for these automatically and report any that are missing.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Dependency&lt;/th&gt; 
   &lt;th&gt;Required&lt;/th&gt; 
   &lt;th&gt;Min Version&lt;/th&gt; 
   &lt;th&gt;Install (macOS)&lt;/th&gt; 
   &lt;th&gt;Install (Linux)&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tmux&lt;/td&gt; 
   &lt;td&gt;Always&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install tmux&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apt install tmux&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;git&lt;/td&gt; 
   &lt;td&gt;Always&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install git&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apt install git&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;jq&lt;/td&gt; 
   &lt;td&gt;Always&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install jq&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apt install jq&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pgrep&lt;/td&gt; 
   &lt;td&gt;Always&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;(included in macOS)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apt install procps&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;lsof&lt;/td&gt; 
   &lt;td&gt;Always&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;(included in macOS)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apt install lsof&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;dolt&lt;/td&gt; 
   &lt;td&gt;Beads provider &lt;code&gt;bd&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;1.86.2 or newer&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install dolt&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/dolthub/dolt/releases&quot;&gt;releases&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;bd&lt;/td&gt; 
   &lt;td&gt;Beads provider &lt;code&gt;bd&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;1.0.0&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/gastownhall/beads/releases&quot;&gt;releases&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/gastownhall/beads/releases&quot;&gt;releases&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;flock&lt;/td&gt; 
   &lt;td&gt;Beads provider &lt;code&gt;bd&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install flock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apt install util-linux&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gh&lt;/td&gt; 
   &lt;td&gt;Optional GitHub gates&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install gh&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://cli.github.com/&quot;&gt;cli.github.com&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;claude / codex / gemini&lt;/td&gt; 
   &lt;td&gt;Per provider&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;See provider docs&lt;/td&gt; 
   &lt;td&gt;See provider docs&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;The &lt;code&gt;bd&lt;/code&gt; (beads) provider is the default. To use a file-based store instead (no dolt/bd/flock needed), set &lt;code&gt;GC_BEADS=file&lt;/code&gt; or add &lt;code&gt;[beads] provider = &quot;file&quot;&lt;/code&gt; to your &lt;code&gt;city.toml&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Managed Dolt checks require a final Dolt 1.86.2 or newer. Earlier and pre-release builds can miss the upstream GC/writer deadlock fix in dolthub/dolt commit &lt;code&gt;ccf7bde206&lt;/code&gt;, which can hang &lt;code&gt;dolt_backup sync&lt;/code&gt; under heavy write load.&lt;/p&gt; 
&lt;p&gt;Install from Homebrew:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install gastownhall/gascity/gascity
gc version
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or build from source (requires &lt;code&gt;make&lt;/code&gt; and Go 1.25+):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make install

gc init ~/bright-lights
cd ~/bright-lights
gc start

mkdir hello-world
cd hello-world
git init
gc rig add .

bd create &quot;Create a script that prints hello world&quot;
gc session attach mayor
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For the longer walkthrough, start with &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/tutorials/01-cities-and-rigs.md&quot;&gt;Tutorial 01&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;The docs now use a Mintlify structure rooted in &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/README.md&quot;&gt;&lt;code&gt;docs/&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/index.mdx&quot;&gt;Docs Home&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/getting-started/installation.md&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/getting-started/quickstart.md&quot;&gt;Quickstart&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/getting-started/repository-map.md&quot;&gt;Repository Map&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/engdocs/contributors/index.md&quot;&gt;Contributors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/docs/reference/index.md&quot;&gt;Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/engdocs/architecture/index.md&quot;&gt;Architecture&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/engdocs/design/index.md&quot;&gt;Design Docs&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/engdocs/archive/index.md&quot;&gt;Archive&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Preview the docs locally:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make docs-dev

# or directly from the repo root
./mint.sh dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Repository Map&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;cmd/gc/&lt;/code&gt;: CLI commands, controller wiring, and supervisor integration&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;internal/runtime/&lt;/code&gt;: runtime provider abstraction and implementations&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;internal/config/&lt;/code&gt;: &lt;code&gt;city.toml&lt;/code&gt; schema, pack composition, and validation&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;internal/beads/&lt;/code&gt;: store abstraction and provider implementations&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;internal/session/&lt;/code&gt;: session bead metadata and wait helpers&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;internal/orders/&lt;/code&gt;: periodic formula and exec dispatch&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;internal/convergence/&lt;/code&gt;: bounded iterative refinement loops&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;examples/&lt;/code&gt;: sample cities, packs, formulas, and configs&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;contrib/&lt;/code&gt;: helper scripts and deployment assets&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;test/&lt;/code&gt;: integration and support test packages&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Read &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/gascity/main/engdocs/contributors/index.md&quot;&gt;engdocs/contributors/index.md&lt;/a&gt; before opening a PR.&lt;/p&gt; 
&lt;p&gt;Useful commands:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;make setup&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;make check&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;make check-docs&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;make test-integration&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/1aba217d297d5cd4c14a7cb83d9c5ffdcf02bc0b6a97ca78ea8aa81ca0937c36/gastownhall/gascity" medium="image" />
      
    </item>
    
    <item>
      <title>XTLS/Xray-core</title>
      <link>https://github.com/XTLS/Xray-core</link>
      <description>&lt;p&gt;Xray, Penetrates Everything. Also the best v2ray-core. Where the magic happens. An open platform for various uses.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Project X&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS&quot;&gt;Project X&lt;/a&gt; originates from XTLS protocol, providing a set of network tools such as &lt;a href=&quot;https://github.com/XTLS/Xray-core&quot;&gt;Xray-core&lt;/a&gt; and &lt;a href=&quot;https://github.com/XTLS/REALITY&quot;&gt;REALITY&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core#readme&quot;&gt;README&lt;/a&gt; is open, so feel free to submit your project &lt;a href=&quot;https://github.com/XTLS/Xray-core/pulls&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.rw&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/a22d34ae-01ee-441c-843a-85356748ed1e&quot; alt=&quot;Remnawave&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://happ.su&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/14055dab-e8bb-48bd-89e8-962709e4098e&quot; alt=&quot;Happ&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://blanc.link/VMTSDqW&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/9145ea7d-5da3-446e-8143-710dba4292c3&quot; alt=&quot;BlancVPN&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/issues/3668&quot;&gt;&lt;strong&gt;Sponsor Xray-core&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Donation &amp;amp; NFTs&lt;/h2&gt; 
&lt;h3&gt;&lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&quot;&gt;Collect a Project X NFT to support the development of Project X!&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&quot;&gt;&lt;img alt=&quot;Project X NFT&quot; width=&quot;150px&quot; src=&quot;https://raw2.seadn.io/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/7fa9ce900fb39b44226348db330e32/8b7fa9ce900fb39b44226348db330e32.svg?sanitize=true&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;TRX(Tron)/USDT/USDC: &lt;code&gt;TNrDh5VSfwd4RPrwsohr6poyNTfFefNYan&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;TON: &lt;code&gt;UQApeV-u2gm43aC1uP76xAC1m6vCylstaN1gpfBmre_5IyTH&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;BTC: &lt;code&gt;1JpqcziZZuqv3QQJhZGNGBVdCBrGgkL6cT&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;XMR: &lt;code&gt;4ABHQZ3yJZkBnLoqiKvb3f8eqUnX4iMPb6wdant5ZLGQELctcerceSGEfJnoCk6nnyRZm73wrwSgvZ2WmjYLng6R7sR67nq&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SOL/USDT/USDC: &lt;code&gt;3x5NuXHzB5APG6vRinPZcsUv5ukWUY1tBGRSJiEJWtZa&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;ETH/USDT/USDC: &lt;code&gt;0xDc3Fe44F0f25D13CACb1C4896CD0D321df3146Ee&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Project X NFT: &lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&quot;&gt;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;VLESS NFT: &lt;a href=&quot;https://opensea.io/collection/vless&quot;&gt;https://opensea.io/collection/vless&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;REALITY NFT: &lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/2&quot;&gt;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/2&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Related links: &lt;a href=&quot;https://github.com/XTLS/Xray-core/pull/5067&quot;&gt;VLESS Post-Quantum Encryption&lt;/a&gt;, &lt;a href=&quot;https://github.com/XTLS/Xray-core/discussions/4113&quot;&gt;XHTTP: Beyond REALITY&lt;/a&gt;, &lt;a href=&quot;https://github.com/XTLS/Xray-core/discussions/3633&quot;&gt;Announcement of NFTs by Project X&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/raw/main/LICENSE&quot;&gt;Mozilla Public License Version 2.0&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://xtls.github.io&quot;&gt;Project X Official Website&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Telegram&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectXray&quot;&gt;Project X&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectXtls&quot;&gt;Project X Channel&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectVless&quot;&gt;Project VLESS&lt;/a&gt; (Русский)&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectXhttp&quot;&gt;Project XHTTP&lt;/a&gt; (Persian)&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linux Script 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-install&quot;&gt;XTLS/Xray-install&lt;/a&gt; (&lt;strong&gt;Official&lt;/strong&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/team-cloudchaser/tempest&quot;&gt;tempest&lt;/a&gt; (supports &lt;a href=&quot;https://systemd.io&quot;&gt;&lt;code&gt;systemd&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://github.com/OpenRC/openrc&quot;&gt;OpenRC&lt;/a&gt;; Linux-only)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Docker 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://ghcr.io/xtls/xray-core&quot;&gt;ghcr.io/xtls/xray-core&lt;/a&gt; (&lt;strong&gt;Official&lt;/strong&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://hub.docker.com/r/teddysun/xray&quot;&gt;teddysun/xray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/wulabing/xray_docker&quot;&gt;wulabing/xray_docker&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Web Panel 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/remnawave/panel&quot;&gt;Remnawave&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/MHSanaei/3x-ui&quot;&gt;3X-UI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/PasarGuard/panel&quot;&gt;PasarGuard&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/qist/xray-ui&quot;&gt;Xray-UI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/xeefei/X-Panel&quot;&gt;X-Panel&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Gozargah/Marzban&quot;&gt;Marzban&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hiddify/Hiddify-Manager&quot;&gt;Hiddify&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AghayeCoder/tx-ui&quot;&gt;TX-UI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/ClickDevTech/CELERITY-panel&quot;&gt;CELERITY&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;One Click 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/zxcvos/Xray-script&quot;&gt;Xray-REALITY&lt;/a&gt;, &lt;a href=&quot;https://github.com/sajjaddg/xray-reality&quot;&gt;xray-reality&lt;/a&gt;, &lt;a href=&quot;https://github.com/aleskxyz/reality-ezpz&quot;&gt;reality-ezpz&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hello-yunshu/Xray_bash_onekey&quot;&gt;Xray_bash_onekey&lt;/a&gt;, &lt;a href=&quot;https://github.com/LordPenguin666/XTool&quot;&gt;XTool&lt;/a&gt;, &lt;a href=&quot;https://github.com/vpainless/vpainless&quot;&gt;VPainLess&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/mack-a/v2ray-agent&quot;&gt;v2ray-agent&lt;/a&gt;, &lt;a href=&quot;https://github.com/wulabing/Xray_onekey&quot;&gt;Xray_onekey&lt;/a&gt;, &lt;a href=&quot;https://github.com/proxysu/ProxySU&quot;&gt;ProxySU&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Magisk 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Asterisk4Magisk/Xray4Magisk&quot;&gt;Xray4Magisk&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/E7KMbb/Xray_For_Magisk&quot;&gt;Xray_For_Magisk&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Homebrew 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;brew install xray&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Example 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/REALITY#readme&quot;&gt;VLESS-XTLS-uTLS-REALITY&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-examples/tree/main/VLESS-TCP-XTLS-Vision&quot;&gt;VLESS-TCP-XTLS-Vision&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-examples/tree/main/All-in-One-fallbacks-Nginx&quot;&gt;All-in-One-fallbacks-Nginx&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Xray-examples 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-examples&quot;&gt;XTLS/Xray-examples&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/chika0801/Xray-examples&quot;&gt;chika0801/Xray-examples&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/lxhao61/integrated-examples&quot;&gt;lxhao61/integrated-examples&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Tutorial 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/chika0801/Xray-install&quot;&gt;XTLS Vision&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://cscot.pages.dev/2023/03/02/Xray-REALITY-tutorial/&quot;&gt;REALITY (English)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/SasukeFreestyle/XTLS-Iran-Reality&quot;&gt;XTLS-Iran-Reality (English)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://computerscot.github.io/vless-xtls-utls-reality-steal-oneself.html&quot;&gt;Xray REALITY with &#39;steal oneself&#39; (English)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://g800.pages.dev/wireguard&quot;&gt;Xray with WireGuard inbound (English)&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;GUI Clients&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;OpenWrt 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Openwrt-Passwall/openwrt-passwall&quot;&gt;PassWall&lt;/a&gt;, &lt;a href=&quot;https://github.com/Openwrt-Passwall/openwrt-passwall2&quot;&gt;PassWall 2&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/fw876/helloworld&quot;&gt;ShadowSocksR Plus+&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/yichya/luci-app-xray&quot;&gt;luci-app-xray&lt;/a&gt; (&lt;a href=&quot;https://github.com/yichya/openwrt-xray&quot;&gt;openwrt-xray&lt;/a&gt;)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Asuswrt-Merlin 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/DanielLavrushin/asuswrt-merlin-xrayui&quot;&gt;XRAYUI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hq450/fancyss&quot;&gt;fancyss&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Windows 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Furious&quot;&gt;Furious&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/InvisibleManVPN/InvisibleMan-XRayClient&quot;&gt;Invisible Man - Xray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/genyleap/GenyConnect&quot;&gt;GenyConnect&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/PhoenixNil/XrayUI-dev&quot;&gt;XrayUI-dev&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Android 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayNG&quot;&gt;v2rayNG&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/X-flutter&quot;&gt;X-flutter&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/SaeedDev94/Xray&quot;&gt;SaeedDev94/Xray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/lhear/SimpleXray&quot;&gt;SimpleXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Q7DF1/XrayFA&quot;&gt;XrayFA&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;iOS &amp;amp; macOS arm64 &amp;amp; tvOS 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/happ-proxy-utility/id6504287215&quot;&gt;Happ&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/ru/app/happ-proxy-utility-plus/id6746188973&quot;&gt;Happ RU&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/us/app/happ-proxy-utility-for-tv/id6748297274&quot;&gt;Happ tvOS&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/streisand/id6450534064&quot;&gt;Streisand&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/en/app/incy/id6756943388&quot;&gt;INCY&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;macOS arm64 &amp;amp; x64 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/happ-proxy-utility/id6504287215&quot;&gt;Happ&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/ru/app/happ-proxy-utility-plus/id6746188973&quot;&gt;Happ RU&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/yanue/V2rayU&quot;&gt;V2rayU&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/tzmax/V2RayXS&quot;&gt;V2RayXS&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Furious&quot;&gt;Furious&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/goxray/desktop&quot;&gt;GoXRay&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/genyleap/GenyConnect&quot;&gt;GenyConnect&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/en/app/incy/id6756943388&quot;&gt;INCY&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Linux 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/v2rayA/v2rayA&quot;&gt;v2rayA&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Furious&quot;&gt;Furious&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/ketetefid/GorzRay&quot;&gt;GorzRay&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/goxray/desktop&quot;&gt;GoXRay&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/genyleap/GenyConnect&quot;&gt;GenyConnect&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Others that support VLESS, XTLS, REALITY, XUDP, PLUX...&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;iOS &amp;amp; macOS arm64 &amp;amp; tvOS 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/NodePassProject/Anywhere&quot;&gt;Anywhere&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/shadowrocket/id932747118&quot;&gt;Shadowrocket&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/loon/id1373567447&quot;&gt;Loon&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/egern/id1616105820&quot;&gt;Egern&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/quantumult-x/id1443988620&quot;&gt;Quantumult X&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Xray Tools 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/lilendian0x00/xray-knife&quot;&gt;xray-knife&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/kutovoys/xray-checker&quot;&gt;xray-checker&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Xray Wrapper 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/libXray&quot;&gt;XTLS/libXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/remnawave/xtls-sdk&quot;&gt;xtls-sdk&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hiddify/xtlsapi&quot;&gt;xtlsapi&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/AndroidLibXrayLite&quot;&gt;AndroidLibXrayLite&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Xray-core-python&quot;&gt;Xray-core-python&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XVGuardian/xray-api&quot;&gt;xray-api&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/XrayR-project/XrayR&quot;&gt;XrayR&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XrayR-project/XrayR-release&quot;&gt;XrayR-release&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/missuo/XrayR-V2Board&quot;&gt;XrayR-V2Board&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Cores 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/amnezia-vpn&quot;&gt;Amnezia VPN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/MetaCubeX/mihomo&quot;&gt;mihomo&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/SagerNet/sing-box&quot;&gt;sing-box&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/raw/main/CODE_OF_CONDUCT.md&quot;&gt;Code of Conduct&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://deepwiki.com/XTLS/Xray-core&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/releases/tag/v1.0.0&quot;&gt;Xray-core v1.0.0&lt;/a&gt; was forked from &lt;a href=&quot;https://github.com/v2fly/v2ray-core/commit/9a03cc5c98d04cc28320fcee26dbc236b3291256&quot;&gt;v2fly-core 9a03cc5&lt;/a&gt;, and we have made &amp;amp; accumulated a huge number of enhancements over time, check &lt;a href=&quot;https://github.com/XTLS/Xray-core/releases&quot;&gt;the release notes for each version&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;For third-party projects used in &lt;a href=&quot;https://github.com/XTLS/Xray-core&quot;&gt;Xray-core&lt;/a&gt;, check your local or &lt;a href=&quot;https://github.com/XTLS/Xray-core/raw/main/go.mod&quot;&gt;the latest go.mod&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;One-line Compilation&lt;/h2&gt; 
&lt;h3&gt;Windows (PowerShell)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;$env:CGO_ENABLED=0
go build -o xray.exe -trimpath -buildvcs=false -ldflags=&quot;-s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Linux / macOS&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -ldflags=&quot;-s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Reproducible Releases&lt;/h3&gt; 
&lt;p&gt;Make sure that you are using the same Go version, and remember to set the git commit id (7 bytes):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags=&quot;all=-l=4&quot; -ldflags=&quot;-X github.com/xtls/xray-core/core.build=REPLACE -s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you are compiling a 32-bit MIPS/MIPSLE target, use this command instead:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags=&quot;-l=4&quot; -ldflags=&quot;-X github.com/xtls/xray-core/core.build=REPLACE -s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Stargazers over time&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://starchart.cc/XTLS/Xray-core&quot;&gt;&lt;img src=&quot;https://starchart.cc/XTLS/Xray-core.svg?sanitize=true&quot; alt=&quot;Stargazers over time&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/7aef98d4805252fe6592d4c40d4192879ac951d1d8c44d5cc0b06882ee2e2a45/XTLS/Xray-core" medium="image" />
      
    </item>
    
    <item>
      <title>go-git/go-git</title>
      <link>https://github.com/go-git/go-git</link>
      <description>&lt;p&gt;A highly extensible Git implementation in pure Go.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.rawgit.com/src-d/artwork/02036484/go-git/files/go-git-github-readme-header.png&quot; alt=&quot;go-git logo&quot; /&gt; &lt;a href=&quot;https://pkg.go.dev/github.com/go-git/go-git/v6&quot;&gt;&lt;img src=&quot;https://godoc.org/github.com/go-git/go-git/v6?status.svg?sanitize=true&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/go-git/go-git/actions&quot;&gt;&lt;img src=&quot;https://github.com/go-git/go-git/workflows/Test/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/go-git/go-git&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/go-git/go-git&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/go-git/go-git&quot;&gt;&lt;img src=&quot;https://api.scorecard.dev/projects/github.com/go-git/go-git/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;go-git&lt;/em&gt; is a highly extensible git implementation library written in &lt;strong&gt;pure Go&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;It can be used to manipulate git repositories at low level &lt;em&gt;(plumbing)&lt;/em&gt; or high level &lt;em&gt;(porcelain)&lt;/em&gt;, through an idiomatic Go API. It also supports several types of storage, such as in-memory filesystems, or custom implementations, thanks to the &lt;a href=&quot;https://pkg.go.dev/github.com/go-git/go-git/v6/plumbing/storer&quot;&gt;&lt;code&gt;Storer&lt;/code&gt;&lt;/a&gt; interface.&lt;/p&gt; 
&lt;p&gt;It has been actively developed since 2015 and is used extensively by &lt;a href=&quot;https://keybase.io/blog/encrypted-git-for-everyone&quot;&gt;Keybase&lt;/a&gt;, &lt;a href=&quot;https://gitea.io/en-us/&quot;&gt;Gitea&lt;/a&gt;, and &lt;a href=&quot;https://github.com/search?q=org%3Apulumi+go-git&amp;amp;type=Code&quot;&gt;Pulumi&lt;/a&gt;, among many other libraries and tools. It is also a dependency in major CNCF projects such as &lt;a href=&quot;https://github.com/kubernetes-sigs/prow&quot;&gt;Kubernetes Prow&lt;/a&gt; and &lt;a href=&quot;https://fluxcd.io/&quot;&gt;Flux&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Project Status&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;For the full backstory see &lt;a href=&quot;https://raw.githubusercontent.com/go-git/go-git/main/HISTORY.md&quot;&gt;HISTORY.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The project is actively maintained by individual contributors, including several of the original authors. It is backed by &lt;a href=&quot;https://github.com/gitsight&quot;&gt;GitSight&lt;/a&gt;, where &lt;code&gt;go-git&lt;/code&gt; is a critical component used at scale, and by &lt;a href=&quot;https://entire.io&quot;&gt;Entire&lt;/a&gt;, which supports ongoing maintenance and development of new features.&lt;/p&gt; 
&lt;h2&gt;Comparison with git&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;go-git&lt;/em&gt; aims to be fully compatible with &lt;a href=&quot;https://github.com/git/git&quot;&gt;git&lt;/a&gt;, all the &lt;em&gt;porcelain&lt;/em&gt; operations are implemented to work exactly as &lt;em&gt;git&lt;/em&gt; does.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;git&lt;/em&gt; is a humongous project with years of development by thousands of contributors, making it challenging for &lt;em&gt;go-git&lt;/em&gt; to implement all the features. You can find a comparison of &lt;em&gt;go-git&lt;/em&gt; vs &lt;em&gt;git&lt;/em&gt; in the &lt;a href=&quot;https://raw.githubusercontent.com/go-git/go-git/main/COMPATIBILITY.md&quot;&gt;compatibility documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;The recommended way to install &lt;em&gt;go-git&lt;/em&gt; is:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;import &quot;github.com/go-git/go-git/v6&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Examples&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Please note that the &lt;code&gt;CheckIfError&lt;/code&gt; and &lt;code&gt;Info&lt;/code&gt; functions used in the examples are from the &lt;a href=&quot;https://github.com/go-git/go-git/raw/main/_examples/common.go#L19&quot;&gt;examples package&lt;/a&gt; just to be used in the examples.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Basic example&lt;/h3&gt; 
&lt;p&gt;A basic example that mimics the standard &lt;code&gt;git clone&lt;/code&gt; command&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;// Clone the given repository to the given directory
Info(&quot;git clone https://github.com/go-git/go-git&quot;)

_, err := git.PlainClone(&quot;/tmp/foo&quot;, &amp;amp;git.CloneOptions{
    URL:      &quot;https://github.com/go-git/go-git&quot;,
    Progress: os.Stdout,
})

CheckIfError(err)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Outputs:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Counting objects: 4924, done.
Compressing objects: 100% (1333/1333), done.
Total 4924 (delta 530), reused 6 (delta 6), pack-reused 3533
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;In-memory example&lt;/h3&gt; 
&lt;p&gt;Cloning a repository into memory and printing the history of HEAD, just like &lt;code&gt;git log&lt;/code&gt; does&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;// Clones the given repository in memory, creating the remote, the local
// branches and fetching the objects, exactly as:
Info(&quot;git clone https://github.com/go-git/go-billy&quot;)

r, err := git.Clone(memory.NewStorage(), nil, &amp;amp;git.CloneOptions{
    URL: &quot;https://github.com/go-git/go-billy&quot;,
})

CheckIfError(err)

// Gets the HEAD history from HEAD, just like this command:
Info(&quot;git log&quot;)

// ... retrieves the branch pointed by HEAD
ref, err := r.Head()
CheckIfError(err)


// ... retrieves the commit history
cIter, err := r.Log(&amp;amp;git.LogOptions{From: ref.Hash()})
CheckIfError(err)

// ... just iterates over the commits, printing it
err = cIter.ForEach(func(c *object.Commit) error {
	fmt.Println(c)
	return nil
})
CheckIfError(err)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Outputs:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;commit ded8054fd0c3994453e9c8aacaf48d118d42991e
Author: Santiago M. Mola &amp;lt;santi@mola.io&amp;gt;
Date:   Sat Nov 12 21:18:41 2016 +0100

    index: ReadFrom/WriteTo returns IndexReadError/IndexWriteError. (#9)

commit df707095626f384ce2dc1a83b30f9a21d69b9dfc
Author: Santiago M. Mola &amp;lt;santi@mola.io&amp;gt;
Date:   Fri Nov 11 13:23:22 2016 +0100

    readwriter: fix bug when writing index. (#10)

    When using ReadWriter on an existing siva file, absolute offset for
    index entries was not being calculated correctly.
...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can find this &lt;a href=&quot;https://raw.githubusercontent.com/go-git/go-git/main/_examples/log/main.go&quot;&gt;example&lt;/a&gt; and many others in the &lt;a href=&quot;https://raw.githubusercontent.com/go-git/go-git/main/_examples&quot;&gt;examples&lt;/a&gt; folder.&lt;/p&gt; 
&lt;h2&gt;Contribute&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/go-git/go-git/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22&quot;&gt;Contributions&lt;/a&gt; are more than welcome, if you are interested please take a look to our &lt;a href=&quot;https://raw.githubusercontent.com/go-git/go-git/main/CONTRIBUTING.md&quot;&gt;Contributing Guidelines&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Apache License Version 2.0, see &lt;a href=&quot;https://raw.githubusercontent.com/go-git/go-git/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/1d18af71c149f0482dfeec2815c175cfba0f6b83a4d6e24d299d136b58182a75/go-git/go-git" medium="image" />
      
    </item>
    
    <item>
      <title>moby/moby</title>
      <link>https://github.com/moby/moby</link>
      <description>&lt;p&gt;The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;The Moby Project&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/moby/moby/v2&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/moby/moby/v2&quot; alt=&quot;PkgGoDev&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/license/moby/moby&quot; alt=&quot;GitHub License&quot; /&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/moby/moby/v2&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/moby/moby/v2&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/moby/moby&quot;&gt;&lt;img src=&quot;https://api.scorecard.dev/projects/github.com/moby/moby/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.bestpractices.dev/projects/10989&quot;&gt;&lt;img src=&quot;https://www.bestpractices.dev/projects/10989/badge&quot; alt=&quot;OpenSSF Best Practices&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/moby/moby/master/docs/static_files/moby-project-logo.png&quot; alt=&quot;Moby Project logo&quot; title=&quot;The Moby Project&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Moby is an open-source project created by Docker to enable and accelerate software containerization.&lt;/p&gt; 
&lt;p&gt;It provides a &quot;Lego set&quot; of toolkit components, the framework for assembling them into custom container-based systems, and a place for all container enthusiasts and professionals to experiment and exchange ideas. Components include container build tools, a container registry, orchestration tools, a runtime and more, and these can be used as building blocks in conjunction with other tools and projects.&lt;/p&gt; 
&lt;h2&gt;Principles&lt;/h2&gt; 
&lt;p&gt;Moby is an open project guided by strong principles, aiming to be modular, flexible and without too strong an opinion on user experience. It is open to the community to help set its direction.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Modular: the project includes lots of components that have well-defined functions and APIs that work together.&lt;/li&gt; 
 &lt;li&gt;Batteries included but swappable: Moby includes enough components to build fully featured container systems, but its modular architecture ensures that most of the components can be swapped by different implementations.&lt;/li&gt; 
 &lt;li&gt;Usable security: Moby provides secure defaults without compromising usability.&lt;/li&gt; 
 &lt;li&gt;Developer focused: The APIs are intended to be functional and useful to build powerful tools. They are not necessarily intended as end user tools but as components aimed at developers. Documentation and UX is aimed at developers not end users.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Audience&lt;/h2&gt; 
&lt;p&gt;The Moby Project is intended for engineers, integrators and enthusiasts looking to modify, hack, fix, experiment, invent and build systems based on containers. It is not for people looking for a commercially supported system, but for people who want to work and learn with open source code.&lt;/p&gt; 
&lt;h2&gt;Relationship with Docker&lt;/h2&gt; 
&lt;p&gt;The components and tools in the Moby Project are initially the open source components that Docker and the community have built for the Docker Project. New projects can be added if they fit with the community goals. Docker is committed to using Moby as the upstream for the Docker Product. However, other projects are also encouraged to use Moby as an upstream, and to reuse the components in diverse ways, and all these uses will be treated in the same way. External maintainers and contributors are welcomed.&lt;/p&gt; 
&lt;p&gt;The Moby project is not intended as a location for support or feature requests for Docker products, but as a place for contributors to work on open source code, fix bugs, and make the code more useful. The releases are supported by the maintainers, community and users, on a best efforts basis only. For customers who want enterprise or commercial support, &lt;a href=&quot;https://www.docker.com/products/docker-desktop/&quot;&gt;Docker Desktop&lt;/a&gt; and &lt;a href=&quot;https://www.mirantis.com/software/mirantis-container-runtime/&quot;&gt;Mirantis Container Runtime&lt;/a&gt; are the appropriate products for these use cases.&lt;/p&gt; 
&lt;h2&gt;Go modules&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report 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 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;Starting with Docker v29 (released November 2025), the Go module &lt;code&gt;github.com/docker/docker&lt;/code&gt; is &lt;strong&gt;deprecated&lt;/strong&gt; and won&#39;t be updated.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;The supported public Go modules are:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&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;a href=&quot;https://raw.githubusercontent.com/moby/moby/master/client/&quot;&gt;&lt;code&gt;github.com/moby/moby/client&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Go client for the Docker Engine API&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/moby/moby/master/api/&quot;&gt;&lt;code&gt;github.com/moby/moby/api&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;API types shared between client and server&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;The root module &lt;code&gt;github.com/moby/moby/v2&lt;/code&gt; is the codebase for building container engines based on Moby (such as Docker Engine). It produces binaries only - it is &lt;strong&gt;not intended to be imported as a Go library&lt;/strong&gt; and has no API stability guarantees.&lt;/p&gt; 
&lt;h3&gt;Release tags&lt;/h3&gt; 
&lt;p&gt;Docker Engine releases are tagged with a &lt;strong&gt;&lt;code&gt;docker-&lt;/code&gt;&lt;/strong&gt; prefix (e.g. &lt;code&gt;docker-v29.0.0&lt;/code&gt; for Docker Engine 29.0.0).&lt;/p&gt; 
&lt;p&gt;These tags are only used to build the Docker Engine binary from the root module - they must not be consumed via &lt;code&gt;go get&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The &lt;code&gt;client&lt;/code&gt; and &lt;code&gt;api&lt;/code&gt; modules are versioned independently with their own tags (e.g. &lt;code&gt;client/v1.x.x&lt;/code&gt;, &lt;code&gt;api/v1.x.x&lt;/code&gt;).&lt;/p&gt; 
&lt;h3&gt;Migrating from &lt;code&gt;github.com/docker/docker&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Replace the old import paths:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;- import &quot;github.com/docker/docker/client&quot;
+ import &quot;github.com/moby/moby/client&quot;

- import &quot;github.com/docker/docker/api/types&quot;
+ import &quot;github.com/moby/moby/api/types&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that v29 includes many breaking API changes (option structs, renamed methods, moved types). See the &lt;a href=&quot;https://github.com/moby/moby/releases/tag/docker-v29.0.0&quot;&gt;v29.0.0 release notes&lt;/a&gt; for the full list of Go SDK changes.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Legal&lt;/h1&gt; 
&lt;p&gt;&lt;em&gt;Brought to you courtesy of our legal counsel. For more context, please see the &lt;a href=&quot;https://github.com/moby/moby/raw/master/NOTICE&quot;&gt;NOTICE&lt;/a&gt; document in this repo.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Use and transfer of Moby may be subject to certain restrictions by the United States and other governments.&lt;/p&gt; 
&lt;p&gt;It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.&lt;/p&gt; 
&lt;p&gt;For more information, please see &lt;a href=&quot;https://www.bis.doc.gov&quot;&gt;https://www.bis.doc.gov&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;Licensing&lt;/h1&gt; 
&lt;p&gt;Moby is licensed under the Apache License, Version 2.0. See &lt;a href=&quot;https://github.com/moby/moby/raw/master/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for the full license text.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/61159c72f3fdb8a8796ec0b5fb457458b3f89b4aa9a202a8fd9b7dbd10e3ba72/moby/moby" medium="image" />
      
    </item>
    
    <item>
      <title>gastownhall/beads</title>
      <link>https://github.com/gastownhall/beads</link>
      <description>&lt;p&gt;Beads - A memory upgrade for your coding agent&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;bd - Beads&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Distributed graph issue tracker for AI agents, powered by &lt;a href=&quot;https://github.com/dolthub/dolt&quot;&gt;Dolt&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; macOS, Linux, Windows, FreeBSD&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/gastownhall/beads&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/steveyegge/beads&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/steveyegge/beads&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/gastownhall/beads/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/gastownhall/beads&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@beads/bd&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@beads/bd&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pypi.org/project/beads-mcp/&quot;&gt;&lt;img src=&quot;https://img.shields.io/pypi/v/beads-mcp&quot; alt=&quot;PyPI&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href=&quot;https://gastownhall.github.io/beads/&quot;&gt;https://gastownhall.github.io/beads/&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Beads provides a persistent, structured memory for coding agents. It replaces messy markdown plans with a dependency-aware graph, allowing agents to handle long-horizon tasks without losing context.&lt;/p&gt; 
&lt;h2&gt;⚡ Quick Start&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install beads CLI (system-wide - don&#39;t clone this repo into your project)
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash

# Initialize in YOUR project
cd your-project
bd init

# Optional: install richer instructions for your agent
bd setup codex    # Codex CLI - creates/updates AGENTS.md
bd setup claude   # Claude Code - installs hooks/settings
bd setup factory  # Factory.ai Droid - creates/updates AGENTS.md
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Beads is a CLI tool you install once and use everywhere. You don&#39;t need to clone this repository into your project.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;bd init&lt;/code&gt; creates or updates &lt;code&gt;AGENTS.md&lt;/code&gt; by default so agents can discover the beads workflow. It skips agent files only when you pass &lt;code&gt;--skip-agents&lt;/code&gt; or &lt;code&gt;--stealth&lt;/code&gt;, or when you configure a custom agent file. Use &lt;code&gt;bd setup --list&lt;/code&gt; to see supported integrations, including &lt;code&gt;bd setup codex&lt;/code&gt;, &lt;code&gt;bd setup factory&lt;/code&gt;, &lt;code&gt;bd setup claude&lt;/code&gt;, &lt;code&gt;bd setup mux&lt;/code&gt;, &lt;code&gt;bd setup cursor&lt;/code&gt;, and more. See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/SETUP.md&quot;&gt;Agent and IDE setup&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Manual copy-paste is only for unsupported agents, existing projects where you cannot rerun &lt;code&gt;bd init&lt;/code&gt;/&lt;code&gt;bd setup&lt;/code&gt;, or custom instruction files. In those cases, run &lt;code&gt;bd onboard&lt;/code&gt; and paste the printed snippet into the file your agent reads.&lt;/p&gt; 
&lt;p&gt;If your agent is not covered by &lt;code&gt;bd setup&lt;/code&gt;, add this minimal &lt;code&gt;AGENTS.md&lt;/code&gt; section:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;This project uses bd (beads) for issue tracking.

- Run `bd prime` for workflow context and command guidance.
- Use `bd ready`, `bd show &amp;lt;id&amp;gt;`, `bd update &amp;lt;id&amp;gt; --claim`, and `bd close &amp;lt;id&amp;gt;`.
- Use `bd remember &quot;insight&quot;` for persistent project memory; do not create MEMORY.md files.
- Do not use markdown TODO lists for task tracking.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;🛠 Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/dolthub/dolt&quot;&gt;Dolt&lt;/a&gt;-Powered:&lt;/strong&gt; Version-controlled SQL database with cell-level merge, native branching, and built-in sync via Dolt remotes.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Agent-Optimized:&lt;/strong&gt; JSON output, dependency tracking, and auto-ready task detection.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zero Conflict:&lt;/strong&gt; Hash-based IDs (&lt;code&gt;bd-a1b2&lt;/code&gt;) prevent merge collisions in multi-agent/multi-branch workflows.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Compaction:&lt;/strong&gt; Semantic &quot;memory decay&quot; summarizes old closed tasks to save context window.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Messaging:&lt;/strong&gt; Message issue type with threading (&lt;code&gt;--thread&lt;/code&gt;), ephemeral lifecycle, and mail delegation.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Graph Links:&lt;/strong&gt; &lt;code&gt;relates_to&lt;/code&gt;, &lt;code&gt;duplicates&lt;/code&gt;, &lt;code&gt;supersedes&lt;/code&gt;, and &lt;code&gt;replies_to&lt;/code&gt; for knowledge graphs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📖 Essential Commands&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Action&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd ready&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;List tasks with no open blockers.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd create &quot;Title&quot; -p 0&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create a P0 task.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd update &amp;lt;id&amp;gt; --claim&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Atomically claim a task (sets assignee + in_progress).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd dep add &amp;lt;child&amp;gt; &amp;lt;parent&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Link tasks (blocks, related, parent-child).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd show &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;View task details and audit trail.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd prime&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Print agent workflow context and persistent memories.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd remember &quot;insight&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Store project memory that &lt;code&gt;bd prime&lt;/code&gt; injects later.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;🔗 Hierarchy &amp;amp; Workflow&lt;/h2&gt; 
&lt;p&gt;Beads supports hierarchical IDs for epics:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;bd-a3f8&lt;/code&gt; (Epic)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;bd-a3f8.1&lt;/code&gt; (Task)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;bd-a3f8.1.1&lt;/code&gt; (Sub-task)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Stealth Mode:&lt;/strong&gt; Run &lt;code&gt;bd init --stealth&lt;/code&gt; to use Beads locally without committing files to the main repo. Perfect for personal use on shared projects. See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/#-git-free-usage&quot;&gt;Git-Free Usage&lt;/a&gt; below.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Contributor vs Maintainer:&lt;/strong&gt; When working on open-source projects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt; (forked repos): Run &lt;code&gt;bd init --contributor&lt;/code&gt; to route planning issues to a separate repo (e.g., &lt;code&gt;~/.beads-planning&lt;/code&gt;). Keeps experimental work out of PRs.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Maintainers&lt;/strong&gt; (write access): Beads auto-detects maintainer role via SSH URLs or HTTPS with credentials. Only need &lt;code&gt;git config beads.role maintainer&lt;/code&gt; if using GitHub HTTPS without credentials but you have write access.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📦 Installation&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install beads           # macOS / Linux (recommended)
npm install -g @beads/bd     # Node.js users
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Other methods:&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md#quick-install-script-all-platforms&quot;&gt;install script&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md#a-note-on-go-install-capability&quot;&gt;go install&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md#build-dependencies-contributors-only&quot;&gt;from source&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md#windows-11&quot;&gt;Windows&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md#linux&quot;&gt;Arch AUR&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; macOS, Linux, Windows, or FreeBSD. See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md&quot;&gt;docs/INSTALLING.md&lt;/a&gt; for complete installation guide.&lt;/p&gt; 
&lt;h3&gt;Security And Verification&lt;/h3&gt; 
&lt;p&gt;Before trusting any downloaded binary, verify its checksum against the release &lt;code&gt;checksums.txt&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The install scripts verify release checksums before install. For manual installs, do this verification yourself before first run.&lt;/p&gt; 
&lt;p&gt;On macOS, &lt;code&gt;scripts/install.sh&lt;/code&gt; preserves the downloaded signature by default. Local ad-hoc re-signing is explicit opt-in via &lt;code&gt;BEADS_INSTALL_RESIGN_MACOS=1&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/ANTIVIRUS.md&quot;&gt;docs/ANTIVIRUS.md&lt;/a&gt; for Windows AV false-positive guidance and verification workflow.&lt;/p&gt; 
&lt;h2&gt;💾 Storage Modes&lt;/h2&gt; 
&lt;p&gt;Beads uses &lt;a href=&quot;https://github.com/dolthub/dolt&quot;&gt;Dolt&lt;/a&gt; as its database. Two modes are available:&lt;/p&gt; 
&lt;h3&gt;Embedded Mode (default)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bd init
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Dolt runs in-process — no external server needed. Data lives in &lt;code&gt;.beads/embeddeddolt/&lt;/code&gt;. Single-writer only (file locking enforced). This is the recommended mode for most users.&lt;/p&gt; 
&lt;p&gt;When the git repo has an &lt;code&gt;origin&lt;/code&gt; remote, &lt;code&gt;bd init&lt;/code&gt; configures a Dolt remote named &lt;code&gt;origin&lt;/code&gt; automatically. Cross-machine sync uses &lt;code&gt;bd dolt push&lt;/code&gt; and &lt;code&gt;bd dolt pull&lt;/code&gt; against &lt;code&gt;refs/dolt/data&lt;/code&gt;; &lt;code&gt;.beads/issues.jsonl&lt;/code&gt; is an export for viewers, interchange, and backup, not the source of truth.&lt;/p&gt; 
&lt;h3&gt;Server Mode&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bd init --server
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Connects to an external &lt;code&gt;dolt sql-server&lt;/code&gt;. Data lives in &lt;code&gt;.beads/dolt/&lt;/code&gt;. Supports multiple concurrent writers. Configure the connection with flags or environment variables:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Flag&lt;/th&gt; 
   &lt;th&gt;Env Var&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--server-host&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;BEADS_DOLT_SERVER_HOST&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;127.0.0.1&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--server-port&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;BEADS_DOLT_SERVER_PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;3307&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--server-socket&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;BEADS_DOLT_SERVER_SOCKET&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;(none; uses TCP)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--server-user&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;BEADS_DOLT_SERVER_USER&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;root&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;BEADS_DOLT_PASSWORD&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;(none)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Unix domain sockets:&lt;/strong&gt; Use &lt;code&gt;--server-socket&lt;/code&gt; to connect via a Unix socket instead of TCP. This avoids port conflicts between concurrent projects and is useful in sandboxed environments (e.g., Claude Code) where file-level access control is simpler than network allowlists. The Dolt server must be started with &lt;code&gt;dolt sql-server --socket &amp;lt;path&amp;gt;&lt;/code&gt;. Auto-start is not supported in socket mode.&lt;/p&gt; 
&lt;h3&gt;Backup &amp;amp; Migration&lt;/h3&gt; 
&lt;p&gt;Back up your database and migrate between modes using &lt;code&gt;bd backup&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Set up a backup destination and push
bd backup init /path/to/backup
bd backup sync

# Restore into a new project (any mode)
bd init           # or bd init --server
bd backup restore --force /path/to/backup
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/DOLT.md#migrating-between-backends&quot;&gt;docs/DOLT.md&lt;/a&gt; for full migration instructions.&lt;/p&gt; 
&lt;h2&gt;🌐 Community Tools&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/COMMUNITY_TOOLS.md&quot;&gt;docs/COMMUNITY_TOOLS.md&lt;/a&gt; for a curated list of community-built UIs, extensions, and integrations—including terminal interfaces, web UIs, editor extensions, and native apps.&lt;/p&gt; 
&lt;h2&gt;🚀 Git-Free Usage&lt;/h2&gt; 
&lt;p&gt;Beads works without git. The Dolt database is the storage backend — git integration (hooks, repo discovery, identity) is optional.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Initialize without git
export BEADS_DIR=/path/to/your/project/.beads
bd init --quiet --stealth

# All core commands work with zero git calls
bd create &quot;Fix auth bug&quot; -p 1 -t bug
bd ready --json
bd update bd-a1b2 --claim
bd prime
bd close bd-a1b2 &quot;Fixed&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;BEADS_DIR&lt;/code&gt; tells bd where to put the &lt;code&gt;.beads/&lt;/code&gt; database directory, bypassing git repo discovery. &lt;code&gt;--stealth&lt;/code&gt; sets &lt;code&gt;no-git-ops: true&lt;/code&gt; in config, disabling all git hook installation and git operations.&lt;/p&gt; 
&lt;p&gt;This is useful for:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Non-git VCS&lt;/strong&gt; (Sapling, Jujutsu, Piper) — no &lt;code&gt;.git/&lt;/code&gt; directory needed&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Monorepos&lt;/strong&gt; — point &lt;code&gt;BEADS_DIR&lt;/code&gt; at a specific subdirectory&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;CI/CD&lt;/strong&gt; — isolated task tracking without repo-level side effects&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Evaluation/testing&lt;/strong&gt; — ephemeral databases in &lt;code&gt;/tmp&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For daemon mode without git, use &lt;code&gt;bd daemon start --local&lt;/code&gt; (see &lt;a href=&quot;https://github.com/gastownhall/beads/pull/433&quot;&gt;PR #433&lt;/a&gt;).&lt;/p&gt; 
&lt;h2&gt;📝 Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gastownhall.github.io/beads/&quot;&gt;Documentation site&lt;/a&gt; (versioned) | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/INSTALLING.md&quot;&gt;Installing&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/SYNC_CONCEPTS.md&quot;&gt;Sync Concepts&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/AGENT_INSTRUCTIONS.md&quot;&gt;Agent Workflow&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/COPILOT_CLI_INTEGRATION.md&quot;&gt;Copilot CLI Setup&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/COPILOT_INTEGRATION.md&quot;&gt;Copilot VS Code MCP&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/ARTICLES.md&quot;&gt;Articles&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/PROTECTED_BRANCHES.md&quot;&gt;Sync Branch Mode&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/TROUBLESHOOTING.md&quot;&gt;Troubleshooting&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/FAQ.md&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://deepwiki.com/gastownhall/beads&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/76994e75ca135b77b64334bc30ab58e9e8a4c33e0ae39f12e283fbf8643a2760/gastownhall/beads" medium="image" />
      
    </item>
    
  </channel>
</rss>
