<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>GitHub Go Daily Trending</title>
    <description>Daily Trending of Go in GitHub</description>
    <pubDate>Wed, 13 May 2026 01:38:02 GMT</pubDate>
    <link>http://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <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/1a692af9926be95c37e86cf54fad0bf1465470c41efba3a59bea5b2c9d4f92a4/apernet/hysteria" 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;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/94633582a96d153f8e085f8fd0002b4d5192153fc10418f358e74ca25edebf45/MHSanaei/3x-ui" 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://poixe.com/i/sub2api&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/assets/partners/logos/poixe.png&quot; alt=&quot;PoixeAi&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thanks to Poixe Ai for sponsoring this project! Poixe AI provides reliable LLM API services. You can leverage the platform&#39;s API endpoints to seamlessly build AI-powered products. Additionally, you can become a vendor by providing AI API resources to the platform and earn revenue. Register through the exclusive &lt;a href=&quot;https://poixe.com/i/sub2api&quot;&gt;sub2api&lt;/a&gt; referral link and receive a bonus of $5 USD 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://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://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://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://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;/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/3a2b2bbdbc824d628d8605d275c4c697a268e930d5992d729b68a0f05ec15535/Wei-Shaw/sub2api" medium="image" />
      
    </item>
    
    <item>
      <title>go-acme/lego</title>
      <link>https://github.com/go-acme/lego</link>
      <description>&lt;p&gt;Let&#39;s Encrypt/ACME client and library written in Go&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img alt=&quot;lego logo&quot; src=&quot;https://raw.githubusercontent.com/go-acme/lego/main/docs/static/images/lego-logo.min.svg?sanitize=true&quot; /&gt; 
 &lt;p&gt;Automatic Certificates and HTTPS for everyone.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h1&gt;Lego&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc8555.html&quot;&gt;ACME&lt;/a&gt; client and library for Let&#39;s Encrypt and other ACME CAs written in Go.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/go-acme/lego/v5&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/go-acme/lego/v5.svg?sanitize=true&quot; alt=&quot;Go Reference&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com//go-acme/lego/actions&quot;&gt;&lt;img src=&quot;https://github.com//go-acme/lego/workflows/Main/badge.svg?branch=master&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/goacme/lego/&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/goacme/lego.svg?sanitize=true&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;lego is an independent, free, and open-source project, if you value it, consider &lt;a href=&quot;https://donate.ldez.dev&quot;&gt;supporting it&lt;/a&gt;! ❤️&lt;/p&gt; 
&lt;p&gt;Everybody thinks that the others will donate, but in the end, nobody does.&lt;/p&gt; 
&lt;p&gt;So if you think that lego is worth it, please consider &lt;a href=&quot;https://donate.ldez.dev&quot;&gt;donating&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;ACME v2 &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc8555.html&quot;&gt;RFC 8555&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Support &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc8737.html&quot;&gt;RFC 8737&lt;/a&gt;: TLS Application‑Layer Protocol Negotiation (ALPN) Challenge Extension&lt;/li&gt; 
   &lt;li&gt;Support &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc8738.html&quot;&gt;RFC 8738&lt;/a&gt;: certificates for IP addresses&lt;/li&gt; 
   &lt;li&gt;Support &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9773.html&quot;&gt;RFC 9773&lt;/a&gt;: Renewal Information (ARI) Extension&lt;/li&gt; 
   &lt;li&gt;Support &lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-acme-profiles/&quot;&gt;draft-ietf-acme-profiles-00&lt;/a&gt;: Profiles Extension&lt;/li&gt; 
   &lt;li&gt;Support &lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-acme-dns-persist/&quot;&gt;draft-ietf-acme-dns-persist-01&lt;/a&gt;: Challenge for Persistent DNS TXT Record Validation&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Comes with more than &lt;a href=&quot;https://go-acme.github.io/lego/dns&quot;&gt;200 DNS providers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Register with CA&lt;/li&gt; 
 &lt;li&gt;Obtain certificates, both from scratch or with an existing CSR&lt;/li&gt; 
 &lt;li&gt;Renew certificates&lt;/li&gt; 
 &lt;li&gt;Revoke certificates&lt;/li&gt; 
 &lt;li&gt;Robust implementation of ACME challenges: 
  &lt;ul&gt; 
   &lt;li&gt;HTTP (http-01)&lt;/li&gt; 
   &lt;li&gt;DNS (dns-01)&lt;/li&gt; 
   &lt;li&gt;TLS (tls-alpn-01)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;SAN certificate support&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://letsencrypt.org/2019/10/09/onboarding-your-customers-with-lets-encrypt-and-acme.html&quot;&gt;CNAME support&lt;/a&gt; by default&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://go-acme.github.io/lego/usage/library/writing-a-challenge-solver/&quot;&gt;Custom challenge solvers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Certificate bundling&lt;/li&gt; 
 &lt;li&gt;OCSP helper function&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;How to &lt;a href=&quot;https://go-acme.github.io/lego/install/&quot;&gt;install&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;as a &lt;a href=&quot;https://go-acme.github.io/lego/obtain&quot;&gt;CLI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;as a &lt;a href=&quot;https://go-acme.github.io/lego/library&quot;&gt;library&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Documentation is hosted live at &lt;a href=&quot;https://go-acme.github.io/lego/&quot;&gt;https://go-acme.github.io/lego/&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;DNS providers&lt;/h2&gt; 
&lt;p&gt;Detailed documentation is available &lt;a href=&quot;https://go-acme.github.io/lego/dns&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;If your DNS provider is not supported, please open an &lt;a href=&quot;https://github.com/go-acme/lego/issues/new?assignees=&amp;amp;labels=enhancement%2C+new-provider&amp;amp;template=new_dns_provider.yml&quot;&gt;issue&lt;/a&gt;.&lt;/p&gt; 
&lt;!-- START DNS PROVIDERS LIST --&gt; 
&lt;table&gt;
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/onecloudru/&quot;&gt;1cloud.ru&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/com35/&quot;&gt;35.com/三五互联&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dns51/&quot;&gt;51DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/abion/&quot;&gt;Abion&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/active24/&quot;&gt;Active24&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/edgedns/&quot;&gt;Akamai EdgeDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/alidns/&quot;&gt;Alibaba Cloud DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/aliesa/&quot;&gt;AlibabaCloud ESA&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/allinkl/&quot;&gt;all-inkl&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/alwaysdata/&quot;&gt;Alwaysdata&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/lightsail/&quot;&gt;Amazon Lightsail&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/route53/&quot;&gt;Amazon Route 53&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/anexia/&quot;&gt;Anexia CloudDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/safedns/&quot;&gt;ANS SafeDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/artfiles/&quot;&gt;ArtFiles&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/arvancloud/&quot;&gt;ArvanCloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/auroradns/&quot;&gt;Aurora DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/autodns/&quot;&gt;Autodns&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/axelname/&quot;&gt;Axelname&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/azion/&quot;&gt;Azion&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/azuredns/&quot;&gt;Azure DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/baiducloud/&quot;&gt;Baidu Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/beget/&quot;&gt;Beget.com&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/binarylane/&quot;&gt;Binary Lane&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/bindman/&quot;&gt;Bindman&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/bluecat/&quot;&gt;Bluecat&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/bluecatv2/&quot;&gt;Bluecat v2&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/bookmyname/&quot;&gt;BookMyName&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/bunny/&quot;&gt;Bunny&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/checkdomain/&quot;&gt;Checkdomain&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/civo/&quot;&gt;Civo&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/cloudru/&quot;&gt;Cloud.ru&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/clouddns/&quot;&gt;CloudDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/cloudflare/&quot;&gt;Cloudflare&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/cloudns/&quot;&gt;ClouDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/conoha/&quot;&gt;ConoHa v2&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/conohav3/&quot;&gt;ConoHa v3&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/constellix/&quot;&gt;Constellix&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/corenetworks/&quot;&gt;Core-Networks&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/cpanel/&quot;&gt;CPanel/WHM&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/curanet/&quot;&gt;Curanet&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/czechia/&quot;&gt;Czechia&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dandomain/&quot;&gt;DanDomain&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ddnss/&quot;&gt;DDnss (DynDNS Service)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/derak/&quot;&gt;Derak Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/desec/&quot;&gt;deSEC.io&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/designate/&quot;&gt;Designate DNSaaS for Openstack&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/digitalocean/&quot;&gt;Digital Ocean&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dinahosting/&quot;&gt;Dinahosting&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/directadmin/&quot;&gt;DirectAdmin&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnsmadeeasy/&quot;&gt;DNS Made Easy&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnsupdate/&quot;&gt;DNS Update (RFC2136)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnsla/&quot;&gt;dns.la&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnsservices/&quot;&gt;DNS.services&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnscale/&quot;&gt;DNScale&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnsexit/&quot;&gt;DNSExit&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnshomede/&quot;&gt;dnsHome.de&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dnsimple/&quot;&gt;DNSimple&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dode/&quot;&gt;Domain Offensive (do.de)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/domeneshop/&quot;&gt;Domeneshop&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dreamhost/&quot;&gt;DreamHost&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/duckdns/&quot;&gt;Duck DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dyn/&quot;&gt;Dyn&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dyndnsfree/&quot;&gt;DynDnsFree.de&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/dynu/&quot;&gt;Dynu&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/easydns/&quot;&gt;EasyDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/edgecenter/&quot;&gt;EdgeCenter&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/efficientip/&quot;&gt;Efficient IP&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/epik/&quot;&gt;Epik&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/eurodns/&quot;&gt;EuroDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/euserv/&quot;&gt;EUserv&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/excedo/&quot;&gt;Excedo&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/exoscale/&quot;&gt;Exoscale&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/exec/&quot;&gt;External program&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/f5xc/&quot;&gt;F5 XC&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/fornex/&quot;&gt;Fornex&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/freemyip/&quot;&gt;freemyip.com&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/namesurfer/&quot;&gt;FusionLayer NameSurfer&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gcore/&quot;&gt;G-Core&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gandi/&quot;&gt;Gandi&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gandiv5/&quot;&gt;Gandi Live DNS (v5)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gehirn/&quot;&gt;Gehirn&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gigahostno/&quot;&gt;Gigahost.no&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/glesys/&quot;&gt;Glesys&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gname/&quot;&gt;Gname&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/godaddy/&quot;&gt;Go Daddy&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gcloud/&quot;&gt;Google Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/gravity/&quot;&gt;Gravity&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hetzner/&quot;&gt;Hetzner&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hostingde/&quot;&gt;Hosting.de&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hostingnl/&quot;&gt;Hosting.nl&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hostinger/&quot;&gt;Hostinger&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hosttech/&quot;&gt;Hosttech&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hostup/&quot;&gt;HostUp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/httpreq/&quot;&gt;HTTP request&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/httpnet/&quot;&gt;http.net&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/huaweicloud/&quot;&gt;Huawei Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hurricane/&quot;&gt;Hurricane Electric DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/hyperone/&quot;&gt;HyperOne&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ibmcloud/&quot;&gt;IBM Cloud (SoftLayer)&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/iijdpf/&quot;&gt;IIJ DNS Platform Service&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/infoblox/&quot;&gt;Infoblox&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/infomaniak/&quot;&gt;Infomaniak&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/internetbs/&quot;&gt;Internet.bs&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/inwx/&quot;&gt;INWX&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ionos/&quot;&gt;Ionos&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ionoscloud/&quot;&gt;Ionos Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ipv64/&quot;&gt;IPv64&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ispconfig/&quot;&gt;ISPConfig 3&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ispconfigddns/&quot;&gt;ISPConfig 3 - Dynamic DNS (DDNS) Module&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/jdcloud/&quot;&gt;JD Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/joker/&quot;&gt;Joker&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/acmedns/&quot;&gt;Joohoi&#39;s ACME-DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/katapult/&quot;&gt;Katapult&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/keyhelp/&quot;&gt;KeyHelp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/leaseweb/&quot;&gt;Leaseweb&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/liara/&quot;&gt;Liara&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/limacity/&quot;&gt;Lima-City&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/linode/&quot;&gt;Linode (v4)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/liquidweb/&quot;&gt;Liquid Web&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/loopia/&quot;&gt;Loopia&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/luadns/&quot;&gt;LuaDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/mailinabox/&quot;&gt;Mail-in-a-Box&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/manageengine/&quot;&gt;ManageEngine CloudDNS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/manual/&quot;&gt;Manual&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/metaname/&quot;&gt;Metaname&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/metaregistrar/&quot;&gt;Metaregistrar&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/mijnhost/&quot;&gt;mijn.host&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/mittwald/&quot;&gt;Mittwald&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/myaddr/&quot;&gt;myaddr.{tools,dev,io}&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/mydnsjp/&quot;&gt;MyDNS.jp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/mythicbeasts/&quot;&gt;MythicBeasts&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/namedotcom/&quot;&gt;Name.com&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/namecheap/&quot;&gt;Namecheap&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/namesilo/&quot;&gt;Namesilo&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/nearlyfreespeech/&quot;&gt;NearlyFreeSpeech.NET&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/nederhost/&quot;&gt;NederHost&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/neodigit/&quot;&gt;Neodigit&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/netcup/&quot;&gt;Netcup&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/netlify/&quot;&gt;Netlify&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/netnod/&quot;&gt;Netnod&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ngenix/&quot;&gt;Ngenix&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/nicmanager/&quot;&gt;Nicmanager&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/nifcloud/&quot;&gt;NIFCloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/njalla/&quot;&gt;Njalla&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/nodion/&quot;&gt;Nodion&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ns1/&quot;&gt;NS1&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/octenium/&quot;&gt;Octenium&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/omglol/&quot;&gt;omg.lol&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/onlinenet/&quot;&gt;Online.net&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/otc/&quot;&gt;Open Telekom Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/oraclecloud/&quot;&gt;Oracle Cloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ovh/&quot;&gt;OVH&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/plesk/&quot;&gt;plesk.com&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/pointdns/&quot;&gt;PointDNS/PointHQ&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/porkbun/&quot;&gt;Porkbun&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/pdns/&quot;&gt;PowerDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/rackspace/&quot;&gt;Rackspace&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/rage4/&quot;&gt;Rage4&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/rainyun/&quot;&gt;Rain Yun/雨云&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/rcodezero/&quot;&gt;RcodeZero&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/regru/&quot;&gt;reg.ru&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/regfish/&quot;&gt;Regfish&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/rimuhosting/&quot;&gt;RimuHosting&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/nicru/&quot;&gt;RU CENTER&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/sakuracloud/&quot;&gt;Sakura Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/scaleway/&quot;&gt;Scaleway&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/scannet/&quot;&gt;ScanNet&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/selectel/&quot;&gt;Selectel&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/selectelv2/&quot;&gt;Selectel v2&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/selfhostde/&quot;&gt;SelfHost.(de|eu)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/servercow/&quot;&gt;Servercow&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/shellrent/&quot;&gt;Shellrent&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/simply/&quot;&gt;Simply.com&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/sonic/&quot;&gt;Sonic&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/spaceship/&quot;&gt;Spaceship&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/stackpath/&quot;&gt;Stackpath&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/syse/&quot;&gt;Syse&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/technitium/&quot;&gt;Technitium&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/tele3/&quot;&gt;Tele3&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/tencentcloud/&quot;&gt;Tencent Cloud DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/edgeone/&quot;&gt;Tencent EdgeOne&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/timewebcloud/&quot;&gt;Timeweb Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/todaynic/&quot;&gt;TodayNIC/时代互联&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/transip/&quot;&gt;TransIP&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ucloud/&quot;&gt;UCloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/ultradns/&quot;&gt;Ultradns&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/uniteddomains/&quot;&gt;United-Domains&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/variomedia/&quot;&gt;Variomedia&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/veesp/&quot;&gt;Veesp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/vegadns/&quot;&gt;VegaDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/vercel/&quot;&gt;Vercel&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/versio/&quot;&gt;Versio.[nl|eu|uk]&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/vinyldns/&quot;&gt;VinylDNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/virtualname/&quot;&gt;Virtualname&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/vkcloud/&quot;&gt;VK Cloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/volcengine/&quot;&gt;Volcano Engine/火山引擎&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/vscale/&quot;&gt;Vscale&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/vultr/&quot;&gt;Vultr&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/wannafind/&quot;&gt;Wannafind&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/webnamesca/&quot;&gt;webnames.ca&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/webnamesru/&quot;&gt;webnames.ru&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/websupport/&quot;&gt;Websupport&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/wedos/&quot;&gt;WEDOS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/westcn/&quot;&gt;West.cn/西部数码&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/xinnet/&quot;&gt;Xinnet&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/yandex360/&quot;&gt;Yandex 360&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/yandexcloud/&quot;&gt;Yandex Cloud&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/yandex/&quot;&gt;Yandex PDD&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/zilore/&quot;&gt;Zilore&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/zoneee/&quot;&gt;Zone.ee&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/zoneedit/&quot;&gt;ZoneEdit&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://go-acme.github.io/lego/dns/zonomi/&quot;&gt;Zonomi&lt;/a&gt;&lt;/td&gt; 
   &lt;td&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;!-- END DNS PROVIDERS LIST --&gt; 
&lt;p&gt;If your DNS provider is not supported, please open an &lt;a href=&quot;https://github.com/go-acme/lego/issues/new?assignees=&amp;amp;labels=enhancement%2C+new-provider&amp;amp;template=new_dns_provider.yml&quot;&gt;issue&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/37038121/20536212-4b75-48c7-8122-b80afcd6e25f" medium="image" />
      
    </item>
    
    <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/263424d82fe57a136e56ebfd658484ce245e2400d7995d2c9ac03b5ac70d7f58/QuantumNous/new-api" medium="image" />
      
    </item>
    
    <item>
      <title>BenedictKing/ccx</title>
      <link>https://github.com/BenedictKing/ccx</link>
      <description>&lt;p&gt;Claude / Codex / Gemini API Proxy - CCX&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Claude / OpenAI Chat / OpenAI Images / Codex Responses / Gemini API Proxy - CCX&lt;/h1&gt; 
&lt;p&gt;English | &lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/BenedictKing/ccx/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/BenedictKing/ccx&quot; alt=&quot;GitHub release&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-yellow.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;CCX is a high-performance AI API proxy and protocol translation gateway for Claude, OpenAI Chat, OpenAI Images, Codex Responses, and Gemini. It provides a unified entrypoint, built-in web administration, channel orchestration, failover, multi-key management, and model routing.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Integrated backend + frontend architecture with single-port deployment&lt;/li&gt; 
 &lt;li&gt;Dual-key authentication with &lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt; and optional &lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Web admin console for channel management, testing, logs, and monitoring&lt;/li&gt; 
 &lt;li&gt;Support for Claude Messages, OpenAI Chat Completions, OpenAI Images, Codex Responses, and Gemini APIs&lt;/li&gt; 
 &lt;li&gt;Smart scheduling with priorities, promotion windows, health checks, failover, and circuit recovery&lt;/li&gt; 
 &lt;li&gt;Per-channel API key rotation, proxy support, custom headers, model allowlists, and route prefixes&lt;/li&gt; 
 &lt;li&gt;Responses session tracking for multi-turn workflows&lt;/li&gt; 
 &lt;li&gt;Embedded frontend assets for simple binary deployment&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;h3&gt;Channel Orchestration&lt;/h3&gt; 
&lt;p&gt;Visual channel management with drag-and-drop priority adjustment and real-time health monitoring.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/docs/screenshots/channel-orchestration.png&quot; alt=&quot;Channel Orchestration&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Add Channel&lt;/h3&gt; 
&lt;p&gt;Supports multiple upstream service types and flexible API key, model mapping, and request parameter configuration.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/docs/screenshots/add-channel-modal.png&quot; width=&quot;500&quot; alt=&quot;Add Channel&quot; /&gt; 
&lt;h3&gt;Traffic Stats&lt;/h3&gt; 
&lt;p&gt;Real-time monitoring of per-channel request traffic, success rate, and latency.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/docs/screenshots/traffic-stats.png&quot; alt=&quot;Traffic Stats&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Architecture&lt;/h2&gt; 
&lt;p&gt;CCX exposes one backend entrypoint:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Client -&amp;gt; backend :3000 -&amp;gt;
  |- /                            -&amp;gt; Web UI
  |- /api/*                       -&amp;gt; Admin API
  |- /v1/messages                 -&amp;gt; Claude Messages proxy
  |- /v1/chat/completions         -&amp;gt; OpenAI Chat proxy
  |- /v1/responses                -&amp;gt; Codex Responses proxy
  |- /v1/images/{...}             -&amp;gt; OpenAI Images proxy
  |- /v1/models                   -&amp;gt; Models API
  `- /v1beta/models/*             -&amp;gt; Gemini proxy
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Images endpoints currently include:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;POST /v1/images/generations&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;POST /v1/images/edits&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;POST /v1/images/variations&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/ARCHITECTURE.md&quot;&gt;ARCHITECTURE.md&lt;/a&gt; for the detailed design.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;h3&gt;Option 1: Binary&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Download the latest binary from &lt;a href=&quot;https://github.com/BenedictKing/ccx/releases/latest&quot;&gt;Releases&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Create a &lt;code&gt;.env&lt;/code&gt; file next to the binary:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;PROXY_ACCESS_KEY=your-proxy-access-key
PORT=3000
ENABLE_WEB_UI=true
APP_UI_LANGUAGE=en
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;Run the binary and open &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;On Windows, if the client runs from cmd, PowerShell, WSL, or Docker and &lt;code&gt;localhost&lt;/code&gt; does not reach CCX, use the Windows host IPv4 address instead, for example &lt;code&gt;http://192.168.1.23:3000&lt;/code&gt;. CCX listens on all interfaces by default through &lt;code&gt;:PORT&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;For background startup without Docker, see &lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/docs/service/README.md&quot;&gt;Service Startup&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Option 2: Docker&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  --name ccx \
  -p 3000:3000 \
  -e PROXY_ACCESS_KEY=your-proxy-access-key \
  -e APP_UI_LANGUAGE=en \
  -v $(pwd)/.config:/app/.config \
  crpi-i19l8zl0ugidq97v.cn-hangzhou.personal.cr.aliyuncs.com/bene/ccx:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Run in the background with Docker Compose:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Enable Watchtower auto-update:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose.yml -f docker-compose.watchtower.yml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Pull the latest image immediately after setup if needed:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose pull ccx
docker compose up -d ccx
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Option 3: Build From Source&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/BenedictKing/ccx
cd ccx
cp backend-go/.env.example backend-go/.env
make run
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Useful commands:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make dev
make run
make build
make frontend-dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Core Environment Variables&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;PORT=3000
ENV=production
ENABLE_WEB_UI=true
PROXY_ACCESS_KEY=your-proxy-access-key
ADMIN_ACCESS_KEY=your-admin-secret-key
APP_UI_LANGUAGE=en
LOG_LEVEL=info
REQUEST_TIMEOUT=300000
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Main Endpoints&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Web UI: &lt;code&gt;GET /&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Health: &lt;code&gt;GET /health&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Admin API: &lt;code&gt;/api/*&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Claude Messages: &lt;code&gt;POST /v1/messages&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;OpenAI Chat: &lt;code&gt;POST /v1/chat/completions&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Codex Responses: &lt;code&gt;POST /v1/responses&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;OpenAI Images: &lt;code&gt;POST /v1/images/generations&lt;/code&gt;, &lt;code&gt;POST /v1/images/edits&lt;/code&gt;, &lt;code&gt;POST /v1/images/variations&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Gemini: &lt;code&gt;POST /v1beta/models/{model}:generateContent&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Models API: &lt;code&gt;GET /v1/models&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;Recommended local workflow:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Frontend only:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd &quot;frontend&quot;
bun install
bun run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Backend only:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd &quot;backend-go&quot;
make dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Additional Docs&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/README.zh-CN.md&quot;&gt;README.zh-CN.md&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/backend-go/README.md&quot;&gt;backend-go/README.md&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/ARCHITECTURE.md&quot;&gt;ARCHITECTURE.md&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/DEVELOPMENT.md&quot;&gt;DEVELOPMENT.md&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/ENVIRONMENT.md&quot;&gt;ENVIRONMENT.md&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/docs/service/README.md&quot;&gt;docs/service/README.md&lt;/a&gt; - non-Docker service startup&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/RELEASE.md&quot;&gt;RELEASE.md&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;Join the QQ group for discussion: &lt;strong&gt;642217364&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/BenedictKing/ccx/main/docs/qrcode_1769645166806.png&quot; width=&quot;300&quot; alt=&quot;QQ Group QR Code&quot; /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/b3a2f8bf01f8081d8c17dbc451974b0b068606018937cc4e7271593bdb29d9a9/BenedictKing/ccx" medium="image" />
      
    </item>
    
    <item>
      <title>containerd/containerd</title>
      <link>https://github.com/containerd/containerd</link>
      <description>&lt;p&gt;An open and reliable container runtime&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/cncf/artwork/master/projects/containerd/horizontal/color/containerd-horizontal-color.png#gh-light-mode-only&quot; alt=&quot;containerd banner light mode&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cncf/artwork/master/projects/containerd/horizontal/white/containerd-horizontal-white.png#gh-dark-mode-only&quot; alt=&quot;containerd banner dark mode&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/containerd/containerd/v2&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/containerd/containerd/v2&quot; alt=&quot;PkgGoDev&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/containerd/containerd/actions?query=workflow%3ACI+event%3Amerge_group&quot;&gt;&lt;img src=&quot;https://github.com/containerd/containerd/actions/workflows/ci.yml/badge.svg?event=merge_group&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/containerd/containerd/actions?query=workflow%3ANightly&quot;&gt;&lt;img src=&quot;https://github.com/containerd/containerd/workflows/Nightly/badge.svg?sanitize=true&quot; alt=&quot;Nightlies&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/containerd/containerd/v2&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/containerd/containerd/v2&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/1271&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/1271/badge&quot; alt=&quot;CII Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/containerd/containerd&quot;&gt;&lt;img src=&quot;https://api.scorecard.dev/projects/github.com/containerd/containerd/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/containerd/containerd/actions/workflows/links.yml&quot;&gt;&lt;img src=&quot;https://github.com/containerd/containerd/actions/workflows/links.yml/badge.svg?sanitize=true&quot; alt=&quot;Check Links&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;containerd is an industry-standard container runtime with an emphasis on simplicity, robustness, and portability. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc.&lt;/p&gt; 
&lt;p&gt;containerd is a member of CNCF with &lt;a href=&quot;https://landscape.cncf.io/?selected=containerd&quot;&gt;&#39;graduated&#39;&lt;/a&gt; status.&lt;/p&gt; 
&lt;p&gt;containerd is designed to be embedded into a larger system, rather than being used directly by developers or end-users.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/historical/design/architecture.png&quot; alt=&quot;architecture&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Announcements&lt;/h2&gt; 
&lt;h3&gt;Now Recruiting&lt;/h3&gt; 
&lt;p&gt;We are a large inclusive OSS project that is welcoming help of any kind shape or form:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Documentation help is needed to make the product easier to consume and extend.&lt;/li&gt; 
 &lt;li&gt;We need OSS community outreach/organizing help to get the word out; manage and create messaging and educational content; and help with social media, community forums/groups, and google groups.&lt;/li&gt; 
 &lt;li&gt;We are actively inviting new &lt;a href=&quot;https://github.com/containerd/project/raw/main/GOVERNANCE.md#security-advisors&quot;&gt;security advisors&lt;/a&gt; to join the team.&lt;/li&gt; 
 &lt;li&gt;New subprojects are being created, core and non-core that could use additional development help.&lt;/li&gt; 
 &lt;li&gt;Each of the &lt;a href=&quot;https://github.com/containerd&quot;&gt;containerd projects&lt;/a&gt; has a list of issues currently being worked on or that need help resolving. 
  &lt;ul&gt; 
   &lt;li&gt;If the issue has not already been assigned to someone or has not made recent progress, and you are interested, please inquire.&lt;/li&gt; 
   &lt;li&gt;If you are interested in starting with a smaller/beginner-level issue, look for issues with an &lt;code&gt;exp/beginner&lt;/code&gt; tag, for example &lt;a href=&quot;https://github.com/containerd/containerd/issues?q=is%3Aissue+is%3Aopen+label%3Aexp%2Fbeginner&quot;&gt;containerd/containerd beginner issues.&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;See our documentation on &lt;a href=&quot;https://containerd.io&quot;&gt;containerd.io&lt;/a&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/ops.md&quot;&gt;for ops and admins&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/namespaces.md&quot;&gt;namespaces&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/client-opts.md&quot;&gt;client options&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To get started contributing to containerd, see &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;If you are interested in trying out containerd see our example at &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/getting-started.md&quot;&gt;Getting Started&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Nightly builds&lt;/h2&gt; 
&lt;p&gt;There are nightly builds available for download &lt;a href=&quot;https://github.com/containerd/containerd/actions?query=workflow%3ANightly&quot;&gt;here&lt;/a&gt;. Binaries are generated from &lt;code&gt;main&lt;/code&gt; branch every night for &lt;code&gt;Linux&lt;/code&gt; and &lt;code&gt;Windows&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Please be aware: nightly builds might have critical bugs, it&#39;s not recommended for use in production and no support provided.&lt;/p&gt; 
&lt;h2&gt;Kubernetes (k8s) CI Dashboard Group&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://testgrid.k8s.io/containerd&quot;&gt;k8s CI dashboard group for containerd&lt;/a&gt; contains test results regarding the health of kubernetes when run against main and a number of containerd release branches.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://testgrid.k8s.io/containerd-periodic&quot;&gt;containerd-periodics&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Runtime Requirements&lt;/h2&gt; 
&lt;p&gt;Runtime requirements for containerd are very minimal. Most interactions with the Linux and Windows container feature sets are handled via &lt;a href=&quot;https://github.com/opencontainers/runc&quot;&gt;runc&lt;/a&gt; and/or OS-specific libraries (e.g. &lt;a href=&quot;https://github.com/Microsoft/hcsshim&quot;&gt;hcsshim&lt;/a&gt; for Microsoft). The current required version of &lt;code&gt;runc&lt;/code&gt; is described in &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/RUNC.md&quot;&gt;RUNC.md&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;There are specific features used by containerd core code and snapshotters that will require a minimum kernel version on Linux. With the understood caveat of distro kernel versioning, a reasonable starting point for Linux is a minimum 4.x kernel version.&lt;/p&gt; 
&lt;p&gt;The overlay filesystem snapshotter, used by default, uses features that were finalized in the 4.x kernel series. If you choose to use btrfs, there may be more flexibility in kernel version (minimum recommended is 3.18), but will require the btrfs kernel module and btrfs tools to be installed on your Linux distribution.&lt;/p&gt; 
&lt;p&gt;To use Linux checkpoint and restore features, you will need &lt;code&gt;criu&lt;/code&gt; installed on your system. See more details in &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/#checkpoint-and-restore&quot;&gt;Checkpoint and Restore&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Build requirements for developers are listed in &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/BUILDING.md&quot;&gt;BUILDING&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Supported Registries&lt;/h2&gt; 
&lt;p&gt;Any registry which is compliant with the &lt;a href=&quot;https://github.com/opencontainers/distribution-spec&quot;&gt;OCI Distribution Specification&lt;/a&gt; is supported by containerd.&lt;/p&gt; 
&lt;p&gt;For configuring registries, see &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/hosts.md&quot;&gt;registry host configuration documentation&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;For a detailed overview of containerd&#39;s core concepts and the features it supports, please refer to the &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/features.md&quot;&gt;FEATURES.MD&lt;/a&gt; document.&lt;/p&gt; 
&lt;h3&gt;Releases and API Stability&lt;/h3&gt; 
&lt;p&gt;Please see &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/RELEASES.md&quot;&gt;RELEASES.md&lt;/a&gt; for details on versioning and stability of containerd components.&lt;/p&gt; 
&lt;p&gt;Downloadable 64-bit Intel/AMD binaries of all official releases are available on our &lt;a href=&quot;https://github.com/containerd/containerd/releases&quot;&gt;releases page&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For other architectures and distribution support, you will find that many Linux distributions package their own containerd and provide it across several architectures, such as &lt;a href=&quot;https://launchpad.net/ubuntu/bionic/+package/containerd&quot;&gt;Canonical&#39;s Ubuntu packaging&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Enabling command auto-completion&lt;/h4&gt; 
&lt;p&gt;Starting with containerd 1.4, the urfave client feature for auto-creation of bash and zsh autocompletion data is enabled. To use the autocomplete feature in a bash shell for example, source the autocomplete/ctr file in your &lt;code&gt;.bashrc&lt;/code&gt;, or manually like:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ source ./contrib/autocomplete/ctr
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Distribution of &lt;code&gt;ctr&lt;/code&gt; autocomplete for bash and zsh&lt;/h4&gt; 
&lt;p&gt;For bash, copy the &lt;code&gt;contrib/autocomplete/ctr&lt;/code&gt; script into &lt;code&gt;/etc/bash_completion.d/&lt;/code&gt; and rename it to &lt;code&gt;ctr&lt;/code&gt;. The &lt;code&gt;zsh_autocomplete&lt;/code&gt; file is also available and can be used similarly for zsh users.&lt;/p&gt; 
&lt;p&gt;Provide documentation to users to &lt;code&gt;source&lt;/code&gt; this file into their shell if you don&#39;t place the autocomplete file in a location where it is automatically loaded for the user&#39;s shell environment.&lt;/p&gt; 
&lt;h3&gt;CRI&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;cri&lt;/code&gt; is a &lt;a href=&quot;https://containerd.io/&quot;&gt;containerd&lt;/a&gt; plugin implementation of the Kubernetes &lt;a href=&quot;https://github.com/kubernetes/cri-api/raw/master/pkg/apis/runtime/v1/api.proto&quot;&gt;container runtime interface (CRI)&lt;/a&gt;. With it, you are able to use containerd as the container runtime for a Kubernetes cluster.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/cri/cri.png&quot; alt=&quot;cri&quot; /&gt;&lt;/p&gt; 
&lt;h4&gt;CRI Status&lt;/h4&gt; 
&lt;p&gt;&lt;code&gt;cri&lt;/code&gt; is a native plugin of containerd. Since containerd 1.1, the cri plugin is built into the release binaries and enabled by default.&lt;/p&gt; 
&lt;p&gt;The &lt;code&gt;cri&lt;/code&gt; plugin has reached GA status, representing that it is:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Feature complete&lt;/li&gt; 
 &lt;li&gt;Works with Kubernetes 1.10 and above&lt;/li&gt; 
 &lt;li&gt;Passes all &lt;a href=&quot;https://github.com/kubernetes/community/raw/master/contributors/devel/sig-node/cri-validation.md&quot;&gt;CRI validation tests&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Passes all &lt;a href=&quot;https://github.com/kubernetes/community/raw/master/contributors/devel/sig-node/e2e-node-tests.md&quot;&gt;node e2e tests&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Passes all &lt;a href=&quot;https://github.com/kubernetes/community/raw/master/contributors/devel/sig-testing/e2e-tests.md&quot;&gt;e2e tests&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See results on the containerd k8s &lt;a href=&quot;https://testgrid.k8s.io/containerd&quot;&gt;test dashboard&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;Validating Your &lt;code&gt;cri&lt;/code&gt; Setup&lt;/h4&gt; 
&lt;p&gt;A Kubernetes incubator project, &lt;a href=&quot;https://github.com/kubernetes-sigs/cri-tools&quot;&gt;cri-tools&lt;/a&gt;, includes programs for exercising CRI implementations. More importantly, cri-tools includes the program &lt;code&gt;critest&lt;/code&gt; which is used for running &lt;a href=&quot;https://github.com/kubernetes/community/raw/master/contributors/devel/sig-node/cri-validation.md&quot;&gt;CRI Validation Testing&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;CRI Guides&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/contrib/ansible/README.md&quot;&gt;Installing with Ansible and Kubeadm&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/getting-started.md&quot;&gt;For Non-Ansible Users, Performing a Custom Installation Using the Release Tarball and Kubeadm&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/cri/testing.md&quot;&gt;CRI Plugin Testing Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/cri/crictl.md&quot;&gt;Debugging Pods, Containers, and Images with &lt;code&gt;crictl&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/docs/cri/config.md&quot;&gt;Configuring &lt;code&gt;cri&lt;/code&gt; Plugins&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/containerd/containerd/raw/main/docs/man/containerd-config.8.md&quot;&gt;Configuring containerd&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Communication&lt;/h3&gt; 
&lt;p&gt;For async communication and long-running discussions please use issues and pull requests on the GitHub repo. This will be the best place to discuss design and implementation.&lt;/p&gt; 
&lt;p&gt;For sync communication catch us in the &lt;code&gt;#containerd&lt;/code&gt; and &lt;code&gt;#containerd-dev&lt;/code&gt; Slack channels on Cloud Native Computing Foundation&#39;s (CNCF) Slack - &lt;code&gt;cloud-native.slack.com&lt;/code&gt;. Everyone is welcome to join and chat. &lt;a href=&quot;https://slack.cncf.io&quot;&gt;Get Invite to CNCF Slack.&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Join our next community meeting hosted on Zoom. The schedule is posted on the &lt;a href=&quot;https://www.cncf.io/calendar/&quot;&gt;CNCF Calendar&lt;/a&gt; (search &#39;containerd&#39; to filter).&lt;/p&gt; 
&lt;h3&gt;Security audit&lt;/h3&gt; 
&lt;p&gt;Security audits for the containerd project are hosted on our website. Please see the &lt;a href=&quot;https://containerd.io/security/&quot;&gt;security page at containerd.io&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h3&gt;Reporting security issues&lt;/h3&gt; 
&lt;p&gt;Please follow the instructions at &lt;a href=&quot;https://github.com/containerd/project/raw/main/SECURITY.md#reporting-a-vulnerability&quot;&gt;containerd/project&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Licenses&lt;/h2&gt; 
&lt;p&gt;The containerd codebase is released under the &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/LICENSE&quot;&gt;Apache 2.0 license&lt;/a&gt;. The &lt;a href=&quot;http://README.md&quot;&gt;README.md&lt;/a&gt; file and files in the &quot;docs&quot; folder are licensed under the Creative Commons Attribution 4.0 International License. You may obtain a copy of the license, titled CC-BY-4.0, at &lt;a href=&quot;http://creativecommons.org/licenses/by/4.0/&quot;&gt;http://creativecommons.org/licenses/by/4.0/&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Project details&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;containerd&lt;/strong&gt; is the primary open source project within the broader containerd GitHub organization. However, all projects within the repo have common maintainership, governance, and contributing guidelines which are stored in a &lt;code&gt;project&lt;/code&gt; repository commonly for all containerd projects.&lt;/p&gt; 
&lt;p&gt;Please find all these core project documents, including the:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/containerd/project/raw/main/GOVERNANCE.md&quot;&gt;Project governance&lt;/a&gt;,&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/containerd/project/raw/main/MAINTAINERS&quot;&gt;Maintainers&lt;/a&gt;,&lt;/li&gt; 
 &lt;li&gt;and &lt;a href=&quot;https://github.com/containerd/project/raw/main/CONTRIBUTING.md&quot;&gt;Contributing guidelines&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;information in our &lt;a href=&quot;https://github.com/containerd/project&quot;&gt;&lt;code&gt;containerd/project&lt;/code&gt;&lt;/a&gt; repository.&lt;/p&gt; 
&lt;h2&gt;Adoption&lt;/h2&gt; 
&lt;p&gt;Interested to see who is using containerd? Are you using containerd in a project? Please add yourself via pull request to our &lt;a href=&quot;https://raw.githubusercontent.com/containerd/containerd/main/ADOPTERS.md&quot;&gt;ADOPTERS.md&lt;/a&gt; file.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/749316f37ec85b8665f7f7398285b5d0eb0400215d1f77e6a7aba91b4234d945/containerd/containerd" 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/7c167c60cd7033771c7f35e410519315692b9c1d488f43a85f87bdb041fa9969/chenhg5/cc-connect" medium="image" />
      
    </item>
    
    <item>
      <title>open-telemetry/opentelemetry-collector</title>
      <link>https://github.com/open-telemetry/opentelemetry-collector</link>
      <description>&lt;p&gt;OpenTelemetry Collector&lt;/p&gt;&lt;hr&gt;&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt; &lt;a href=&quot;https://opentelemetry.io/docs/collector/getting-started/&quot;&gt;Getting Started&lt;/a&gt; &amp;nbsp;&amp;nbsp;•&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector/main/CONTRIBUTING.md&quot;&gt;Getting Involved&lt;/a&gt; &amp;nbsp;&amp;nbsp;•&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://cloud-native.slack.com/archives/C01N6P7KR6W&quot;&gt;Getting In Touch&lt;/a&gt; &lt;/strong&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/open-telemetry/opentelemetry-collector/actions/workflows/build-and-test.yml?query=branch%3Amain&quot;&gt; &lt;img alt=&quot;Build Status&quot; src=&quot;https://img.shields.io/github/actions/workflow/status/open-telemetry/opentelemetry-collector/build-and-test.yml?branch=main&amp;amp;style=for-the-badge&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/open-telemetry/opentelemetry-collector&quot;&gt; &lt;img alt=&quot;Go Report Card&quot; src=&quot;https://goreportcard.com/badge/github.com/open-telemetry/opentelemetry-collector?style=for-the-badge&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/open-telemetry/opentelemetry-collector/branch/main/&quot;&gt; &lt;img alt=&quot;Codecov Status&quot; src=&quot;https://img.shields.io/codecov/c/github/open-telemetry/opentelemetry-collector?style=for-the-badge&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/open-telemetry/opentelemetry-collector/releases&quot;&gt; &lt;img alt=&quot;GitHub release (latest by date including pre-releases)&quot; src=&quot;https://img.shields.io/github/v/release/open-telemetry/opentelemetry-collector?include_prereleases&amp;amp;style=for-the-badge&quot; /&gt; &lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://www.bestpractices.dev/projects/8404&quot;&gt;&lt;img src=&quot;https://www.bestpractices.dev/projects/8404/badge&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&amp;amp;can=1&amp;amp;q=proj:opentelemetry&quot;&gt; &lt;img alt=&quot;Fuzzing Status&quot; src=&quot;https://oss-fuzz-build-logs.storage.googleapis.com/badges/opentelemetry.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector/main/docs/vision.md&quot;&gt;Vision&lt;/a&gt; &amp;nbsp;&amp;nbsp;•&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://opentelemetry.io/docs/collector/configuration/&quot;&gt;Configuration&lt;/a&gt; &amp;nbsp;&amp;nbsp;•&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://opentelemetry.io/docs/collector/internal-telemetry/#use-internal-telemetry-to-monitor-the-collector&quot;&gt;Monitoring&lt;/a&gt; &amp;nbsp;&amp;nbsp;•&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector/main/docs/security-best-practices.md&quot;&gt;Security&lt;/a&gt; &amp;nbsp;&amp;nbsp;•&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://pkg.go.dev/go.opentelemetry.io/collector&quot;&gt;Package&lt;/a&gt; &lt;/strong&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;&lt;img src=&quot;https://opentelemetry.io/img/logos/opentelemetry-logo-nav.png&quot; alt=&quot;OpenTelemetry Icon&quot; width=&quot;45&quot; height=&quot;&quot; /&gt; OpenTelemetry Collector&lt;/h1&gt; 
&lt;p&gt;The OpenTelemetry Collector offers a vendor-agnostic implementation on how to receive, process and export telemetry data. In addition, it removes the need to run, operate and maintain multiple agents/collectors in order to support open-source telemetry data formats (e.g. Jaeger, Prometheus, etc.) to multiple open-source or commercial back-ends.&lt;/p&gt; 
&lt;p&gt;Objectives:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Usable: Reasonable default configuration, supports popular protocols, runs and collects out of the box.&lt;/li&gt; 
 &lt;li&gt;Performant: Highly stable and performant under varying loads and configurations.&lt;/li&gt; 
 &lt;li&gt;Observable: An exemplar of an observable service.&lt;/li&gt; 
 &lt;li&gt;Extensible: Customizable without touching the core code.&lt;/li&gt; 
 &lt;li&gt;Unified: Single codebase, deployable as an agent or collector with support for traces, metrics and logs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;The OpenTelemetry Collector SIG is present at the &lt;a href=&quot;https://cloud-native.slack.com/archives/C01N6P7KR6W&quot;&gt;#otel-collector&lt;/a&gt; channel on the CNCF Slack and &lt;a href=&quot;https://github.com/open-telemetry/community#implementation-sigs&quot;&gt;meets once a week&lt;/a&gt; via video calls. Everyone is invited to join those calls, which typically serves the following purposes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;meet the humans behind the project&lt;/li&gt; 
 &lt;li&gt;get an opinion about specific proposals&lt;/li&gt; 
 &lt;li&gt;look for a sponsor for a proposed component after trying already via GitHub and Slack&lt;/li&gt; 
 &lt;li&gt;get attention to a specific pull-request that got stuck and is difficult to discuss asynchronously&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;We rotate our video calls between three time slots, in order to allow everyone to join at least once every three meetings. The rotation order is as follows:&lt;/p&gt; 
&lt;p&gt;Tuesday:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dateful.com/convert/pst-pdt-pacific-time?t=1700&quot;&gt;17:00 PT&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Wednesday:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dateful.com/convert/pst-pdt-pacific-time?t=0900&quot;&gt;09:00 PT&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://dateful.com/convert/pst-pdt-pacific-time?t=0500&quot;&gt;05:00 PT&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Contributors to the project are also welcome to have ad-hoc meetings for synchronous discussions about specific points. Post a note in #otel-collector-dev on Slack inviting others, specifying the topic to be discussed. Unless there are strong reasons to keep the meeting private, please make it an open invitation for other contributors to join. Try also to identify who would be the other contributors interested on that topic and in which timezones they are.&lt;/p&gt; 
&lt;p&gt;Remember that our source of truth is GitHub: every decision made via Slack or video calls has to be recorded in the relevant GitHub issue. Ideally, the agenda items from the meeting notes would include a link to the issue or pull request where a discussion is happening already. We acknowledge that not everyone can join Slack or the synchronous calls and don&#39;t want them to feel excluded.&lt;/p&gt; 
&lt;h2&gt;Supported OTLP version&lt;/h2&gt; 
&lt;p&gt;This code base is currently built against using OTLP protocol v1.10.0, considered Stable. &lt;a href=&quot;https://github.com/open-telemetry/opentelemetry-proto?tab=readme-ov-file#stability-definition&quot;&gt;See the OpenTelemetry Protocol Stability definition here.&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Stability levels&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector/main/docs/component-stability.md&quot;&gt;Stability Levels and versioning&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;h2&gt;Compatibility&lt;/h2&gt; 
&lt;p&gt;When used as a library, the OpenTelemetry Collector attempts to track the currently supported versions of Go, as &lt;a href=&quot;https://go.dev/doc/devel/release#policy&quot;&gt;defined by the Go team&lt;/a&gt;. Removing support for an unsupported Go version is not considered a breaking change.&lt;/p&gt; 
&lt;p&gt;Support for Go versions on the OpenTelemetry Collector is updated as follows:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;The first release after the release of a new Go minor version &lt;code&gt;N&lt;/code&gt; will add build and tests steps for the new Go minor version.&lt;/li&gt; 
 &lt;li&gt;The first release after the release of a new Go minor version &lt;code&gt;N&lt;/code&gt; will remove support for Go version &lt;code&gt;N-2&lt;/code&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Official OpenTelemetry Collector distro binaries will be built with a release in the latest Go minor version series.&lt;/p&gt; 
&lt;h2&gt;Verifying the images signatures&lt;/h2&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;To verify a signed artifact or blob, first &lt;a href=&quot;https://docs.sigstore.dev/cosign/system_config/installation/&quot;&gt;install Cosign&lt;/a&gt;, then follow the instructions below.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;We are signing the images &lt;code&gt;otel/opentelemetry-collector&lt;/code&gt; and &lt;code&gt;otel/opentelemetry-collector-contrib&lt;/code&gt; using &lt;a href=&quot;https://github.com/sigstore/cosign&quot;&gt;sigstore cosign&lt;/a&gt; tool and to verify the signatures you can run the following command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ cosign verify \
  --certificate-identity=https://github.com/open-telemetry/opentelemetry-collector-releases/.github/workflows/base-release.yaml@refs/tags/&amp;lt;RELEASE_TAG&amp;gt; \
  --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
  &amp;lt;OTEL_COLLECTOR_IMAGE&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;where:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;&amp;lt;RELEASE_TAG&amp;gt;&lt;/code&gt;: is the release that you want to validate&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;&amp;lt;OTEL_COLLECTOR_IMAGE&amp;gt;&lt;/code&gt;: is the image that you want to check&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ cosign verify --certificate-identity=https://github.com/open-telemetry/opentelemetry-collector-releases/.github/workflows/base-release.yaml@refs/tags/v0.98.0 --certificate-oidc-issuer=https://token.actions.githubusercontent.com ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.98.0

Verification for ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.98.0 --
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - Existence of the claims in the transparency log was verified offline
  - The code-signing certificate was verified using trusted certificate authority certificates

[{&quot;critical&quot;:{&quot;identity&quot;:{&quot;docker-reference&quot;:&quot;ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib&quot;},&quot;image&quot;:{&quot;docker-manifest-digest&quot;:&quot;sha256:5cea85bcbc734a3c0a641368e5a4ea9d31b472997e9f2feca57eeb4a147fcf1a&quot;},&quot;type&quot;:&quot;cosign container image signature&quot;},&quot;optional&quot;:{&quot;1.3.6.1.4.1.57264.1.1&quot;:&quot;https://token.actions.githubusercontent.com&quot;,&quot;1.3.6.1.4.1.57264.1.2&quot;:&quot;push&quot;,&quot;1.3.6.1.4.1.57264.1.3&quot;:&quot;9e20bf5c142e53070ccb8320a20315fffb41469e&quot;,&quot;1.3.6.1.4.1.57264.1.4&quot;:&quot;Release Contrib&quot;,&quot;1.3.6.1.4.1.57264.1.5&quot;:&quot;open-telemetry/opentelemetry-collector-releases&quot;,&quot;1.3.6.1.4.1.57264.1.6&quot;:&quot;refs/tags/v0.98.0&quot;,&quot;Bundle&quot;:{&quot;SignedEntryTimestamp&quot;:&quot;MEUCIQDdlmNeKXQrHnonwWiHLhLLwFDVDNoOBCn2sv85J9P8mgIgDQFssWJImo1hn38VlojvSCL7Qq5FMmtnGu0oLsNdOm8=&quot;,&quot;Payload&quot;:{&quot;body&quot;:&quot;eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxMzVjY2RlN2YzZTNhYjU2NmFmYzJhYWU3MDljYmJlNmFhMDZlZWMzNDA2MWNkZjMyNmRhYzM2MmY0NWM4Yjg4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURFbDV6N0diMWRVYkM5KzR4c1VvbDhMcWZNV2hiTzhkdEpwdExyMXhUNWZnSWdTdEwwN1I0ZDA5R2x0ZkV0azJVbmlJSlJhQVdrVDJNWDVtRXJNSlplc2pRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaG9ha05EUW5jeVowRjNTVUpCWjBsVlNETkNjRFZTYlVSU1VpOXphMWg0YVdWUFlrcFhSbmRrUjNNNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFJkMDVFUlhoTlJGRjRUMFJOTlZkb1kwNU5hbEYzVGtSRmVFMUVVWGxQUkUwMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZyWlRsSE1ubHNjMjkzYVZZMmRFOVZSazlRVVhNd2NXY3hTSEV5WmpsVUx6UTJZbEFLU1ZSNE0ybFRkVXBhV0hGc1dEUldWV2Q1VlZndmNVazJhblZ2WlZSVEswaG5XVUoyYjBseVNERTFUeTltZEd0VmVtRlBRMEpwZDNkbloxbHZUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZHTkRrMUNrdDFNRWhqTm5rek1rNUNTVTFFU21ReVpuWkxNMHBCZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJkWldVZEJNVlZrUlZGRlFpOTNVamhOU0hGSFpVZG9NR1JJUW5wUGFUaDJXakpzTUdGSVZtbE1iVTUyWWxNNWRtTkhWblZNV0ZKc1lrZFdkQXBhV0ZKNVpWTTVkbU5IVm5Wa1IxWnpXbGN4YkdSSVNqVk1WMDUyWWtkNGJGa3pVblpqYVRGNVdsZDRiRmxZVG14amVUaDFXakpzTUdGSVZtbE1NMlIyQ21OdGRHMWlSemt6WTNrNWFWbFlUbXhNV0Vwc1lrZFdhR015VlhWbFYwWjBZa1ZDZVZwWFducE1NMUpvV2pOTmRtUnFRWFZQVkdkMVRVUkJOVUpuYjNJS1FtZEZSVUZaVHk5TlFVVkNRa04wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JBcGlibEYxV1RJNWRFMUNTVWREYVhOSFFWRlJRbWMzT0hkQlVVbEZRa2hDTVdNeVozZE9aMWxMUzNkWlFrSkJSMFIyZWtGQ1FYZFJiMDlYVlhsTlIwcHRDazVYVFhoT1JFcHNUbFJOZDA1NlFtcFpNa2swVFhwSmQxbFVTWGROZWtVeFdtMWFiVmxxVVhoT1JGazFXbFJCWkVKbmIzSkNaMFZGUVZsUEwwMUJSVVVLUWtFNVUxcFhlR3haV0U1c1NVVk9kbUp1VW5saFYwbDNVRkZaUzB0M1dVSkNRVWRFZG5wQlFrSlJVWFppTTBKc1lta3hNRnBYZUd4aVYxWXdZMjVyZGdwaU0wSnNZbTVTYkdKSFZuUmFXRko1WlZNeGFtSXllSE5hVjA0d1lqTkpkR050Vm5OYVYwWjZXbGhOZDBoM1dVdExkMWxDUWtGSFJIWjZRVUpDWjFGU0NtTnRWbTFqZVRrd1dWZGtla3d6V1hkTWFtczBUR3BCZDA5M1dVdExkMWxDUWtGSFJIWjZRVUpEUVZGMFJFTjBiMlJJVW5kamVtOTJURE5TZG1FeVZuVUtURzFHYW1SSGJIWmliazExV2pKc01HRklWbWxrV0U1c1kyMU9kbUp1VW14aWJsRjFXVEk1ZEUxSlIwbENaMjl5UW1kRlJVRlpUeTlOUVVWS1FraHZUUXBsUjJnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemwyWTBkV2RVeFlVbXhpUjFaMFdsaFNlV1ZUT1haalIxWjFaRWRXYzFwWE1XeGtTRW8xQ2t4WFRuWmlSM2hzV1ROU2RtTnBNWGxhVjNoc1dWaE9iR041T0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU0yTjVPV2xaV0U1c1RGaEtiR0pIVm1nS1l6SlZkV1ZYUm5SaVJVSjVXbGRhZWt3elVtaGFNMDEyWkdwQmRVOVVaM1ZOUkVFMFFtZHZja0puUlVWQldVOHZUVUZGUzBKRGIwMUxSR3hzVFdwQ2FRcGFhbFpxVFZSUmVWcFVWWHBOUkdOM1dUSk9hVTlFVFhsTlIwVjVUVVJOZUU1WFdtMWFiVWt3VFZSUk1rOVhWWGRJVVZsTFMzZFpRa0pCUjBSMmVrRkNDa04zVVZCRVFURnVZVmhTYjJSWFNYUmhSemw2WkVkV2EwMUdTVWREYVhOSFFWRlJRbWMzT0hkQlVYZEZVa0Y0UTJGSVVqQmpTRTAyVEhrNWJtRllVbThLWkZkSmRWa3lPWFJNTWpsM1dsYzBkR1JIVm5OYVZ6RnNaRWhLTlV3eU9YZGFWelV3V2xkNGJHSlhWakJqYm10MFdUSTVjMkpIVm1wa1J6bDVURmhLYkFwaVIxWm9ZekpXZWsxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlYVlhsTlIwcHRUbGROZUU1RVNteE9WRTEzVG5wQ2Fsa3lTVFJOZWtsM0NsbFVTWGROZWtVeFdtMWFiVmxxVVhoT1JGazFXbFJCYUVKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWsxTlJWaEtiRnB1VFhaa1IwWnVZM2s1TWsxRE5EVUtUME0wZDAxQ2EwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlEzZDNTazVFUVhkTmFsVjZUbXBqTWsxRVJVZERhWE5IUVZGUlFtYzNPSGRCVWtGRlNYZDNhQXBoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NamwzV2xjMGRHUkhWbk5hVnpGc1pFaEtOVTFDWjBkRGFYTkhRVkZSUW1jM09IZEJVa1ZGQ2tObmQwbE9SR3MxVDFSbmQwMUVTWGRuV1hOSFEybHpSMEZSVVVKbk56aDNRVkpKUldaUmVEZGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hRS1RESTVkMXBYTkhSa1IxWnpXbGN4YkdSSVNqVk1NamwzV2xjMU1GcFhlR3hpVjFZd1kyNXJkRmt5T1hOaVIxWnFaRWM1ZVV4WVNteGlSMVpvWXpKV2VncE1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU0wcHNZa2RXYUdNeVZYUlpNamwxWkVoS2NGbHBOVFZaVnpGelVVaEtiRnB1VFhaa1IwWnVDbU41T1RKTlF6UTFUME0wZDAxRVowZERhWE5IUVZGUlFtYzNPSGRCVWsxRlMyZDNiMDlYVlhsTlIwcHRUbGROZUU1RVNteE9WRTEzVG5wQ2Fsa3lTVFFLVFhwSmQxbFVTWGROZWtVeFdtMWFiVmxxVVhoT1JGazFXbFJCVlVKbmIzSkNaMFZGUVZsUEwwMUJSVlZDUVZsTlFraENNV015WjNka1VWbExTM2RaUWdwQ1FVZEVkbnBCUWtaUlVtNUVSMVp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJZak5DYkdKcE1UQmFWM2hzWWxkV01HTnVhM1ppTTBKc0NtSnVVbXhpUjFaMFdsaFNlV1ZUTVdwaU1uaHpXbGRPTUdJelNYUmpiVlp6V2xkR2VscFlUWFpaVjA0d1lWYzVkV041T1hsa1Z6VjZUSHBuTWs1RVJYZ0tUbnBGTVU1cVkzWlpXRkl3V2xjeGQyUklUWFpOYWtGWFFtZHZja0puUlVWQldVOHZUVUZGVjBKQlowMUNia0l4V1cxNGNGbDZRMEpwWjFsTFMzZFpRZ3BDUVVoWFpWRkpSVUZuVWpoQ1NHOUJaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQQ2tGQlFVSnFjM1JvUlVOUlFVRkJVVVJCUldOM1VsRkpaMWg2Y2xaME0xQjRkU3ROWVZKRkswUkdORzlGUldNMGVucHphSGR1VDJ4bGMwZGlla2xwYnpNS0wxWmpRMGxSUkZNelJ6QmlNemRhYUhRNGFITjJUSEozYkc1UFFXYzJWRXh1U1ZSS09HTjNkMVEzTW5sMVRVdFlUbFJCUzBKblozRm9hMnBQVUZGUlJBcEJkMDV1UVVSQ2EwRnFRWGxFUkZSYVFqQlRPVXBGYkZsSGJuTnZWVmhLYm04MU5Fc3ZUVUZUTlN0RFFVMU9lbWRqUWpWQ2JrRk5OMWhNUjBoV01HRnhDbVpaY21weFkyOXFia3RaUTAxSFRWRnFjalpUVGt0Q2NVaEtZVGwxTDBSTlQySlpNa0pKTVV0ME4yTnhOemhFT0VOcVMzQmFVblJoYnpadFVVMUVZMk1LUms5M2VYWnhWalJPVld0dlpsRTlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0=&quot;,&quot;integratedTime&quot;:1712809120,&quot;logIndex&quot;:84797936,&quot;logID&quot;:&quot;c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d&quot;}},&quot;Issuer&quot;:&quot;https://token.actions.githubusercontent.com&quot;,&quot;Subject&quot;:&quot;https://github.com/open-telemetry/opentelemetry-collector-releases/.github/workflows/base-release.yaml@refs/tags/v0.98.0&quot;,&quot;githubWorkflowName&quot;:&quot;Release Contrib&quot;,&quot;githubWorkflowRef&quot;:&quot;refs/tags/v0.98.0&quot;,&quot;githubWorkflowRepository&quot;:&quot;open-telemetry/opentelemetry-collector-releases&quot;,&quot;githubWorkflowSha&quot;:&quot;9e20bf5c142e53070ccb8320a20315fffb41469e&quot;,&quot;githubWorkflowTrigger&quot;:&quot;push&quot;}},{&quot;critical&quot;:{&quot;identity&quot;:{&quot;docker-reference&quot;:&quot;ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib&quot;},&quot;image&quot;:{&quot;docker-manifest-digest&quot;:&quot;sha256:5cea85bcbc734a3c0a641368e5a4ea9d31b472997e9f2feca57eeb4a147fcf1a&quot;},&quot;type&quot;:&quot;cosign container image signature&quot;},&quot;optional&quot;:{&quot;1.3.6.1.4.1.57264.1.1&quot;:&quot;https://token.actions.githubusercontent.com&quot;,&quot;1.3.6.1.4.1.57264.1.2&quot;:&quot;push&quot;,&quot;1.3.6.1.4.1.57264.1.3&quot;:&quot;9e20bf5c142e53070ccb8320a20315fffb41469e&quot;,&quot;1.3.6.1.4.1.57264.1.4&quot;:&quot;Release Contrib&quot;,&quot;1.3.6.1.4.1.57264.1.5&quot;:&quot;open-telemetry/opentelemetry-collector-releases&quot;,&quot;1.3.6.1.4.1.57264.1.6&quot;:&quot;refs/tags/v0.98.0&quot;,&quot;Bundle&quot;:{&quot;SignedEntryTimestamp&quot;:&quot;MEUCIQD1ehDnPO6fzoPIpeQ3KFuYHHBiX7RcEbpo9B2r7JAlzwIgZ1bsuQz7gAXbNU1IEdsTQgfAnRk3xVXO16GnKXM2sAQ=&quot;,&quot;Payload&quot;:{&quot;body&quot;:&quot;eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxMzVjY2RlN2YzZTNhYjU2NmFmYzJhYWU3MDljYmJlNmFhMDZlZWMzNDA2MWNkZjMyNmRhYzM2MmY0NWM4Yjg4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRU92QXl0aE5RVGNvNHFMdG9GZUVOV0toNCtEK2I5SUxyYWhoa09WMmVBM0FpQjNEL2FpUGd1T05zUlB5alhaWk1hdnlCam0vMkVxNFNUMkZJWHozTnpyYWc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaHBSRU5EUW5jMlowRjNTVUpCWjBsVlZuRlRLMnd4WXpoMWVFUktOWEppZDAxMlVuaDBSR3hXVW1nMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFJkMDVFUlhoTlJGRjRUMFJSZVZkb1kwNU5hbEYzVGtSRmVFMUVVWGxQUkZGNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYyWlRCdGJrRkdRVzl1TVZoUGRIVlRMMXBNT0djeE5YUlJkVmxPTmtRemVUUlBWM0FLT1ZSTFMwUlVkRkJHU2xST1ZrWlJkVTlKUWs1bVJqWk1ORTlGYkd4dlZuUndaSE5uYjB0NVZGTnlPR3hTV1c1S1JIRlBRMEpwTUhkbloxbHdUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZDSzFkSENuVmtlRE5IZUcxS1RWUkpUVVJyYW13clJtdzFXRzkzZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJkWldVZEJNVlZrUlZGRlFpOTNVamhOU0hGSFpVZG9NR1JJUW5wUGFUaDJXakpzTUdGSVZtbE1iVTUyWWxNNWRtTkhWblZNV0ZKc1lrZFdkQXBhV0ZKNVpWTTVkbU5IVm5Wa1IxWnpXbGN4YkdSSVNqVk1WMDUyWWtkNGJGa3pVblpqYVRGNVdsZDRiRmxZVG14amVUaDFXakpzTUdGSVZtbE1NMlIyQ21OdGRHMWlSemt6WTNrNWFWbFlUbXhNV0Vwc1lrZFdhR015VlhWbFYwWjBZa1ZDZVZwWFducE1NMUpvV2pOTmRtUnFRWFZQVkdkMVRVUkJOVUpuYjNJS1FtZEZSVUZaVHk5TlFVVkNRa04wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JBcGlibEYxV1RJNWRFMUNTVWREYVhOSFFWRlJRbWMzT0hkQlVVbEZRa2hDTVdNeVozZE9aMWxMUzNkWlFrSkJSMFIyZWtGQ1FYZFJiMDlYVlhsTlIwcHRDazVYVFhoT1JFcHNUbFJOZDA1NlFtcFpNa2swVFhwSmQxbFVTWGROZWtVeFdtMWFiVmxxVVhoT1JGazFXbFJCWkVKbmIzSkNaMFZGUVZsUEwwMUJSVVVLUWtFNVUxcFhlR3haV0U1c1NVVk9kbUp1VW5saFYwbDNVRkZaUzB0M1dVSkNRVWRFZG5wQlFrSlJVWFppTTBKc1lta3hNRnBYZUd4aVYxWXdZMjVyZGdwaU0wSnNZbTVTYkdKSFZuUmFXRko1WlZNeGFtSXllSE5hVjA0d1lqTkpkR050Vm5OYVYwWjZXbGhOZDBoM1dVdExkMWxDUWtGSFJIWjZRVUpDWjFGU0NtTnRWbTFqZVRrd1dWZGtla3d6V1hkTWFtczBUR3BCZDA5M1dVdExkMWxDUWtGSFJIWjZRVUpEUVZGMFJFTjBiMlJJVW5kamVtOTJURE5TZG1FeVZuVUtURzFHYW1SSGJIWmliazExV2pKc01HRklWbWxrV0U1c1kyMU9kbUp1VW14aWJsRjFXVEk1ZEUxSlIwbENaMjl5UW1kRlJVRlpUeTlOUVVWS1FraHZUUXBsUjJnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemwyWTBkV2RVeFlVbXhpUjFaMFdsaFNlV1ZUT1haalIxWjFaRWRXYzFwWE1XeGtTRW8xQ2t4WFRuWmlSM2hzV1ROU2RtTnBNWGxhVjNoc1dWaE9iR041T0hWYU1td3dZVWhXYVV3elpIWmpiWFJ0WWtjNU0yTjVPV2xaV0U1c1RGaEtiR0pIVm1nS1l6SlZkV1ZYUm5SaVJVSjVXbGRhZWt3elVtaGFNMDEyWkdwQmRVOVVaM1ZOUkVFMFFtZHZja0puUlVWQldVOHZUVUZGUzBKRGIwMUxSR3hzVFdwQ2FRcGFhbFpxVFZSUmVWcFVWWHBOUkdOM1dUSk9hVTlFVFhsTlIwVjVUVVJOZUU1WFdtMWFiVWt3VFZSUk1rOVhWWGRJVVZsTFMzZFpRa0pCUjBSMmVrRkNDa04zVVZCRVFURnVZVmhTYjJSWFNYUmhSemw2WkVkV2EwMUdTVWREYVhOSFFWRlJRbWMzT0hkQlVYZEZVa0Y0UTJGSVVqQmpTRTAyVEhrNWJtRllVbThLWkZkSmRWa3lPWFJNTWpsM1dsYzBkR1JIVm5OYVZ6RnNaRWhLTlV3eU9YZGFWelV3V2xkNGJHSlhWakJqYm10MFdUSTVjMkpIVm1wa1J6bDVURmhLYkFwaVIxWm9ZekpXZWsxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlYVlhsTlIwcHRUbGROZUU1RVNteE9WRTEzVG5wQ2Fsa3lTVFJOZWtsM0NsbFVTWGROZWtVeFdtMWFiVmxxVVhoT1JGazFXbFJCYUVKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWsxTlJWaEtiRnB1VFhaa1IwWnVZM2s1TWsxRE5EVUtUME0wZDAxQ2EwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlEzZDNTazVFUVhkTmFsVjZUbXBqTWsxRVJVZERhWE5IUVZGUlFtYzNPSGRCVWtGRlNYZDNhQXBoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NamwzV2xjMGRHUkhWbk5hVnpGc1pFaEtOVTFDWjBkRGFYTkhRVkZSUW1jM09IZEJVa1ZGQ2tObmQwbE9SR3MxVDFSbmQwMUVTWGRuV1hOSFEybHpSMEZSVVVKbk56aDNRVkpKUldaUmVEZGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hRS1RESTVkMXBYTkhSa1IxWnpXbGN4YkdSSVNqVk1NamwzV2xjMU1GcFhlR3hpVjFZd1kyNXJkRmt5T1hOaVIxWnFaRWM1ZVV4WVNteGlSMVpvWXpKV2VncE1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU0wcHNZa2RXYUdNeVZYUlpNamwxWkVoS2NGbHBOVFZaVnpGelVVaEtiRnB1VFhaa1IwWnVDbU41T1RKTlF6UTFUME0wZDAxRVowZERhWE5IUVZGUlFtYzNPSGRCVWsxRlMyZDNiMDlYVlhsTlIwcHRUbGROZUU1RVNteE9WRTEzVG5wQ2Fsa3lTVFFLVFhwSmQxbFVTWGROZWtVeFdtMWFiVmxxVVhoT1JGazFXbFJCVlVKbmIzSkNaMFZGUVZsUEwwMUJSVlZDUVZsTlFraENNV015WjNka1VWbExTM2RaUWdwQ1FVZEVkbnBCUWtaUlVtNUVSMVp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJZak5DYkdKcE1UQmFWM2hzWWxkV01HTnVhM1ppTTBKc0NtSnVVbXhpUjFaMFdsaFNlV1ZUTVdwaU1uaHpXbGRPTUdJelNYUmpiVlp6V2xkR2VscFlUWFpaVjA0d1lWYzVkV041T1hsa1Z6VjZUSHBuTWs1RVJYZ0tUbnBGTVU1cVkzWlpXRkl3V2xjeGQyUklUWFpOYWtGWFFtZHZja0puUlVWQldVOHZUVUZGVjBKQlowMUNia0l4V1cxNGNGbDZRMEpwZDFsTFMzZFpRZ3BDUVVoWFpWRkpSVUZuVWpsQ1NITkJaVkZDTTBGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQQ2tGQlFVSnFjM1JvUjJKSlFVRkJVVVJCUldkM1VtZEphRUZQZUZNM2RteDRjVzVGYTBKVVRtSlZVRUpsUkZSbk0waGtlRlkyY0cxWk9FdGliREV6TjNBS1lWUnViMEZwUlVFelMyMUxVbU5uYWxBeVQzSmxORVpyVm5vNU4xaENNWGRsUzBOeWFXazFTMWx2UTB0bVkxRktSREJSZDBObldVbExiMXBKZW1vd1JRcEJkMDFFWVVGQmQxcFJTWGhCUzNwcVpHMUZTV2gzV21Kb1lVSlNlalk1Y1N0MWVrNVZSMmxhYlRWVk4xcE5aWFJMUTFSM1VFTkljRkZQVldvdlVERkJDa2R0YWt3elJucFFObTVpYkRGblNYZFNUbXN6UkhkNWMwOUJUMHhoUVVoR09IaHhZV0ZzT0U5WGNGRmFhRGh4TTJVMVNVSmFXR0ZWVkhocFlWbGFTM29LUXpWS1RGVlNWbnBMTURsd04wVjBUd290TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0=&quot;,&quot;integratedTime&quot;:1712809122,&quot;logIndex&quot;:84797940,&quot;logID&quot;:&quot;c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d&quot;}},&quot;Issuer&quot;:&quot;https://token.actions.githubusercontent.com&quot;,&quot;Subject&quot;:&quot;https://github.com/open-telemetry/opentelemetry-collector-releases/.github/workflows/base-release.yaml@refs/tags/v0.98.0&quot;,&quot;githubWorkflowName&quot;:&quot;Release Contrib&quot;,&quot;githubWorkflowRef&quot;:&quot;refs/tags/v0.98.0&quot;,&quot;githubWorkflowRepository&quot;:&quot;open-telemetry/opentelemetry-collector-releases&quot;,&quot;githubWorkflowSha&quot;:&quot;9e20bf5c142e53070ccb8320a20315fffb41469e&quot;,&quot;githubWorkflowTrigger&quot;:&quot;push&quot;}}]
&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;We started signing the images with release &lt;code&gt;v0.95.0&lt;/code&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector/main/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt; for details.&lt;/p&gt; 
&lt;p&gt;Here is a list of community roles with current and previous members:&lt;/p&gt; 
&lt;h3&gt;Maintainers&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/codeboten&quot;&gt;Alex Boten&lt;/a&gt;, Honeycomb&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bogdandrutu&quot;&gt;Bogdan Drutu&lt;/a&gt;, Snowflake&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dmitryax&quot;&gt;Dmitrii Anoshin&lt;/a&gt;, Splunk&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mx-psi&quot;&gt;Pablo Baeyens&lt;/a&gt;, DataDog&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more information about the maintainer role, see the &lt;a href=&quot;https://github.com/open-telemetry/community/raw/main/guides/contributor/membership.md#maintainer&quot;&gt;community repository&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Approvers&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/axw&quot;&gt;Andrew Wilkins&lt;/a&gt;, Elastic&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/atoulme&quot;&gt;Antoine Toulme&lt;/a&gt;, Splunk&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dmathieu&quot;&gt;Damien Mathieu&lt;/a&gt;, Elastic&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/evan-bradley&quot;&gt;Evan Bradley&lt;/a&gt;, Dynatrace&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jade-guiton-dd&quot;&gt;Jade Guiton&lt;/a&gt;, Datadog&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jmacd&quot;&gt;Joshua MacDonald&lt;/a&gt;, Microsoft&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TylerHelmuth&quot;&gt;Tyler Helmuth&lt;/a&gt;, Honeycomb&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/songy23&quot;&gt;Yang Song&lt;/a&gt;, Datadog&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more information about the approver role, see the &lt;a href=&quot;https://github.com/open-telemetry/community/raw/main/guides/contributor/membership.md#approver&quot;&gt;community repository&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;In addition to what is described at the organization-level, the SIG Collector requires all core approvers to take part in rotating the role of the &lt;a href=&quot;https://raw.githubusercontent.com/open-telemetry/opentelemetry-collector/main/docs/release.md#release-manager&quot;&gt;release manager&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Triagers&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/andrzej-stencel&quot;&gt;Andrzej Stencel&lt;/a&gt;, Elastic&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ArthurSens&quot;&gt;Arthur Silva Sens&lt;/a&gt;, Grafana Labs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/VihasMakwana&quot;&gt;Vihas Makwana&lt;/a&gt;, Elastic&lt;/li&gt; 
 &lt;li&gt;Actively seeking contributors to triage issues&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more information about the triager role, see the &lt;a href=&quot;https://github.com/open-telemetry/community/raw/main/guides/contributor/membership.md#triager&quot;&gt;community repository&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Emeritus&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alolita&quot;&gt;Alolita Sharma&lt;/a&gt;, Triager&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/andrewhsu&quot;&gt;Andrew Hsu&lt;/a&gt;, Triager&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Aneurysm9&quot;&gt;Anthony Mirabella&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sincejune&quot;&gt;Chao Weng&lt;/a&gt;, Triager&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/djaglowski&quot;&gt;Daniel Jaglowski&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/james-bebbington&quot;&gt;James Bebbington&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jrcamp&quot;&gt;Jay Camp&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jpkrohling&quot;&gt;Juraci Paixão Kröhling&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nilebox&quot;&gt;Nail Islamov&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/owais&quot;&gt;Owais Lone&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pjanotti&quot;&gt;Paulo Janotti&lt;/a&gt;, Maintainer&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/punya&quot;&gt;Punya Biswal&lt;/a&gt;, Triager&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rghetia&quot;&gt;Rahul Patel&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/flands&quot;&gt;Steve Flanders&lt;/a&gt;, Triager&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sjkaris&quot;&gt;Steven Karis&lt;/a&gt;, Approver&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tigrannajaryan&quot;&gt;Tigran Najaryan&lt;/a&gt;, Maintainer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more information about the emeritus role, see the &lt;a href=&quot;https://github.com/open-telemetry/community/raw/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager&quot;&gt;community repository&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Thanks to all of our contributors!&lt;/h3&gt; 
&lt;a href=&quot;https://github.com/open-telemetry/opentelemetry-collector/graphs/contributors&quot;&gt; &lt;img alt=&quot;Repo contributors&quot; src=&quot;https://contrib.rocks/image?repo=open-telemetry/opentelemetry-collector&quot; /&gt; &lt;/a&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/dd7a8ad8341e5e0168c4e4ff488390d1116fca5837e4b3729245ec8d5db21368/open-telemetry/opentelemetry-collector" medium="image" />
      
    </item>
    
    <item>
      <title>kubernetes/minikube</title>
      <link>https://github.com/kubernetes/minikube</link>
      <description>&lt;p&gt;Run Kubernetes locally&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;minikube&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/kubernetes/minikube/actions&quot;&gt;&lt;img src=&quot;https://github.com/kubernetes/minikube/workflows/build/badge.svg?sanitize=true&quot; alt=&quot;Actions Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/kubernetes/minikube&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/kubernetes/minikube&quot; alt=&quot;GoReport Widget&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kubernetes/minikube/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/kubernetes/minikube/total.svg?sanitize=true&quot; alt=&quot;GitHub All Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kubernetes/minikube/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/kubernetes/minikube?include_prereleases&quot; alt=&quot;Latest Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codespaces.new/kubernetes/minikube?quickstart=1&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Try%20minikube-in%20browser-%23326ce5?logo=kubernetes&amp;amp;logoColor=white&quot; alt=&quot;Try minikube in the browser (needs github login)&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;img src=&quot;https://github.com/kubernetes/minikube/raw/master/images/logo/logo.png&quot; width=&quot;100&quot; alt=&quot;minikube logo&quot; /&gt; 
&lt;p&gt;minikube implements a local Kubernetes cluster on macOS, Linux, and Windows. minikube&#39;s &lt;a href=&quot;https://minikube.sigs.k8s.io/docs/concepts/principles/&quot;&gt;primary goals&lt;/a&gt; are to be the best tool for local Kubernetes application development and to support all Kubernetes features that fit.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/kubernetes/minikube/master/site/static/images/screenshot.png&quot; width=&quot;575&quot; height=&quot;322&quot; alt=&quot;screenshot&quot; /&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;minikube runs the latest stable release of Kubernetes, with support for standard Kubernetes features like:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/accessing/#loadbalancer-access&quot;&gt;LoadBalancer&lt;/a&gt; - using &lt;code&gt;minikube tunnel&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Multi-cluster - using &lt;code&gt;minikube start -p &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/accessing/#nodeport-access&quot;&gt;NodePorts&lt;/a&gt; - using &lt;code&gt;minikube service&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/persistent_volumes/&quot;&gt;Persistent Volumes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/dashboard/&quot;&gt;Dashboard&lt;/a&gt; - &lt;code&gt;minikube dashboard&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/config/#runtime-configuration&quot;&gt;Container runtimes&lt;/a&gt; - &lt;code&gt;minikube start --container-runtime&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/config/#modifying-kubernetes-defaults&quot;&gt;Configure apiserver and kubelet options&lt;/a&gt; via command-line flags&lt;/li&gt; 
 &lt;li&gt;Supports common &lt;a href=&quot;https://github.com/minikube-ci/examples&quot;&gt;CI environments&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;As well as developer-friendly features:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/deploying/#addons&quot;&gt;Addons&lt;/a&gt; - a marketplace for developers to share configurations for running services on minikube&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/tutorials/nvidia/&quot;&gt;NVIDIA GPU support&lt;/a&gt; - for machine learning&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/tutorials/amd/&quot;&gt;AMD GPU support&lt;/a&gt; - for machine learning&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/mount/&quot;&gt;Filesystem mounts&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;For more information, see the official &lt;a href=&quot;https://minikube.sigs.k8s.io&quot;&gt;minikube website&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://minikube.sigs.k8s.io/docs/start/&quot;&gt;Getting Started Guide&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;📣 &lt;strong&gt;Please fill out our &lt;a href=&quot;https://forms.gle/Gg3hG5ZySw8c1C24A&quot;&gt;fast 5-question survey&lt;/a&gt;&lt;/strong&gt; so that we can learn how &amp;amp; why you use minikube, and what improvements we should make. Thank you! 👯&lt;/p&gt; 
&lt;h2&gt;GitHub Codespace&lt;/h2&gt; 
&lt;p&gt;You can run minikube in a GitHub Codespace by clicking here: &lt;a href=&quot;https://codespaces.new/kubernetes/minikube?quickstart=1&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Open%20in-GitHub%20Codespaces-blue?logo=github&quot; alt=&quot;Open in GitHub Codespaces&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;This will launch a Github Codespace. You can then run &lt;code&gt;minikube start&lt;/code&gt; and &lt;code&gt;minikube dashboard&lt;/code&gt; - You can then open Minikube Dashboard by clicking opening the link displayed in the terminal.&lt;/p&gt; 
&lt;p&gt;You can also run Minikube in a Dev Container locally using your favorite IDE, for more information see Dev Containers &lt;a href=&quot;https://code.visualstudio.com/docs/devcontainers/containers&quot;&gt;https://code.visualstudio.com/docs/devcontainers/containers&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://minikube.sigs.k8s.io/docs/&quot;&gt;https://minikube.sigs.k8s.io/docs/&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;More Examples&lt;/h2&gt; 
&lt;p&gt;See minikube in action in the &lt;a href=&quot;https://minikube.sigs.k8s.io/docs/handbook/controls/&quot;&gt;controls handbook&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Governance&lt;/h2&gt; 
&lt;p&gt;Kubernetes project is governed by a framework of principles, values, policies and processes to help our community and constituents towards our shared goals.&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/kubernetes/community/raw/master/governance.md&quot;&gt;Kubernetes Community&lt;/a&gt; is the launching point for learning about how we organize ourselves.&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/kubernetes/steering&quot;&gt;Kubernetes Steering community repo&lt;/a&gt; is used by the Kubernetes Steering Committee, which oversees governance of the Kubernetes project.&lt;/p&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;minikube is a Kubernetes &lt;a href=&quot;https://github.com/kubernetes/community/tree/master/sig-cluster-lifecycle&quot;&gt;#sig-cluster-lifecycle&lt;/a&gt; project.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://kubernetes.slack.com/messages/minikube&quot;&gt;&lt;strong&gt;#minikube on Kubernetes Slack&lt;/strong&gt;&lt;/a&gt; - Live chat with minikube developers!&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://groups.google.com/g/minikube-users&quot;&gt;minikube-users mailing list&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://groups.google.com/g/minikube-dev&quot;&gt;minikube-dev mailing list&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/contrib/&quot;&gt;Contributing&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/contrib/roadmap/&quot;&gt;Development Roadmap&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Join our community meetings:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tinyurl.com/minikube-oh&quot;&gt;Bi-weekly office hours, Mondays @ 11am PST&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://minikube.sigs.k8s.io/docs/contrib/triage/&quot;&gt;Triage Party&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/3f6a7ef38a5522ba73d28bf13fd3145644959af09a9224b717d16ec2d4c45d1b/kubernetes/minikube" medium="image" />
      
    </item>
    
    <item>
      <title>stretchr/testify</title>
      <link>https://github.com/stretchr/testify</link>
      <description>&lt;p&gt;A toolkit with common assertions and mocks that plays nicely with the standard library&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Testify - Thou Shalt Write Tests&lt;/h1&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;Testify is being maintained at v1, no breaking changes will be accepted in this repo.&lt;br /&gt; &lt;a href=&quot;https://github.com/stretchr/testify/discussions/1560&quot;&gt;See discussion about v2&lt;/a&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/stretchr/testify/actions/workflows/main.yml&quot;&gt;&lt;img src=&quot;https://github.com/stretchr/testify/actions/workflows/main.yml/badge.svg?branch=master&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/stretchr/testify&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/stretchr/testify&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify&quot;&gt;&lt;img src=&quot;https://pkg.go.dev/badge/github.com/stretchr/testify&quot; alt=&quot;PkgGoDev&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Go code (golang) set of packages that provide many tools for testifying that your code will behave as you intend.&lt;/p&gt; 
&lt;p&gt;Features include:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/stretchr/testify/master/#assert-package&quot;&gt;Easy assertions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/stretchr/testify/master/#mock-package&quot;&gt;Mocking&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/stretchr/testify/master/#suite-package&quot;&gt;Testing suite interfaces and functions&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Get started:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install testify with &lt;a href=&quot;https://raw.githubusercontent.com/stretchr/testify/master/#installation&quot;&gt;one line of code&lt;/a&gt;, or &lt;a href=&quot;https://raw.githubusercontent.com/stretchr/testify/master/#staying-up-to-date&quot;&gt;update it with another&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;For an introduction to writing test code in Go, see &lt;a href=&quot;https://go.dev/doc/code#Testing&quot;&gt;https://go.dev/doc/code#Testing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Check out the API Documentation &lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify&quot;&gt;https://pkg.go.dev/github.com/stretchr/testify&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Use &lt;a href=&quot;https://github.com/Antonboom/testifylint&quot;&gt;testifylint&lt;/a&gt; (via &lt;a href=&quot;https://golangci-lint.run/&quot;&gt;golangci-lint&lt;/a&gt;) to avoid common mistakes&lt;/li&gt; 
 &lt;li&gt;A little about &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test-Driven Development (TDD)&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify/assert&quot; title=&quot;API documentation&quot;&gt;&lt;code&gt;assert&lt;/code&gt;&lt;/a&gt; package&lt;/h2&gt; 
&lt;p&gt;The &lt;code&gt;assert&lt;/code&gt; package provides some helpful methods that allow you to write better test code in Go.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Prints friendly, easy to read failure descriptions&lt;/li&gt; 
 &lt;li&gt;Allows for very readable code&lt;/li&gt; 
 &lt;li&gt;Optionally annotate each assertion with a message&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See it in action:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package yours

import (
	&quot;testing&quot;

	&quot;github.com/stretchr/testify/assert&quot;
)

func TestSomething(t *testing.T) {
	// assert equality
	assert.Equal(t, 123, 123, &quot;they should be equal&quot;)

	// assert inequality
	assert.NotEqual(t, 123, 456, &quot;they should not be equal&quot;)

	// assert for nil (good for errors)
	assert.Nil(t, object)

	// assert for not nil (good when you expect something)
	if assert.NotNil(t, object) {
		// now we know that object isn&#39;t nil, we are safe to make
		// further assertions without causing any errors
		assert.Equal(t, &quot;Something&quot;, object.Value)
	}
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Every assert func takes the &lt;code&gt;testing.T&lt;/code&gt; object as the first argument. This is how it writes the errors out through the normal &lt;code&gt;go test&lt;/code&gt; capabilities.&lt;/li&gt; 
 &lt;li&gt;Every assert func returns a bool indicating whether the assertion was successful or not, this is useful for if you want to go on making further assertions under certain conditions.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;if you assert many times, use the below:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package yours

import (
	&quot;testing&quot;

	&quot;github.com/stretchr/testify/assert&quot;
)

func TestSomething(t *testing.T) {
	assert := assert.New(t)

	// assert equality
	assert.Equal(123, 123, &quot;they should be equal&quot;)

	// assert inequality
	assert.NotEqual(123, 456, &quot;they should not be equal&quot;)

	// assert for nil (good for errors)
	assert.Nil(object)

	// assert for not nil (good when you expect something)
	if assert.NotNil(object) {
		// now we know that object isn&#39;t nil, we are safe to make
		// further assertions without causing any errors
		assert.Equal(&quot;Something&quot;, object.Value)
	}
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify/require&quot; title=&quot;API documentation&quot;&gt;&lt;code&gt;require&lt;/code&gt;&lt;/a&gt; package&lt;/h2&gt; 
&lt;p&gt;The &lt;code&gt;require&lt;/code&gt; package provides same global functions as the &lt;code&gt;assert&lt;/code&gt; package, but instead of returning a boolean result they terminate current test. These functions must be called from the goroutine running the test or benchmark function, not from other goroutines created during the test. Otherwise race conditions may occur.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://pkg.go.dev/testing#T.FailNow&quot;&gt;t.FailNow&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify/mock&quot; title=&quot;API documentation&quot;&gt;&lt;code&gt;mock&lt;/code&gt;&lt;/a&gt; package&lt;/h2&gt; 
&lt;p&gt;The &lt;code&gt;mock&lt;/code&gt; package provides a mechanism for easily writing mock objects that can be used in place of real objects when writing test code.&lt;/p&gt; 
&lt;p&gt;An example test function that tests a piece of code that relies on an external object &lt;code&gt;testObj&lt;/code&gt;, can set up expectations (testify) and assert that they indeed happened:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package yours

import (
	&quot;testing&quot;

	&quot;github.com/stretchr/testify/mock&quot;
)

/*
  Test objects
*/

// MyMockedObject is a mocked object that implements an interface
// that describes an object that the code I am testing relies on.
type MyMockedObject struct {
	mock.Mock
}

// DoSomething is a method on MyMockedObject that implements some interface
// and just records the activity, and returns what the Mock object tells it to.
//
// In the real object, this method would do something useful, but since this
// is a mocked object - we&#39;re just going to stub it out.
//
// NOTE: This method is not being tested here, code that uses this object is.
func (m *MyMockedObject) DoSomething(number int) (bool, error) {
	args := m.Called(number)
	return args.Bool(0), args.Error(1)
}

/*
  Actual test functions
*/

// TestSomething is an example of how to use our test object to
// make assertions about some target code we are testing.
func TestSomething(t *testing.T) {
	// create an instance of our test object
	testObj := new(MyMockedObject)

	// set up expectations
	testObj.On(&quot;DoSomething&quot;, 123).Return(true, nil)

	// call the code we are testing
	targetFuncThatDoesSomethingWithObj(testObj)

	// assert that the expectations were met
	testObj.AssertExpectations(t)
}

// TestSomethingWithPlaceholder is a second example of how to use our test object to
// make assertions about some target code we are testing.
// This time using a placeholder. Placeholders might be used when the
// data being passed in is normally dynamically generated and cannot be
// predicted beforehand (eg. containing hashes that are time sensitive)
func TestSomethingWithPlaceholder(t *testing.T) {
	// create an instance of our test object
	testObj := new(MyMockedObject)

	// set up expectations with a placeholder in the argument list
	testObj.On(&quot;DoSomething&quot;, mock.Anything).Return(true, nil)

	// call the code we are testing
	targetFuncThatDoesSomethingWithObj(testObj)

	// assert that the expectations were met
	testObj.AssertExpectations(t)

}

// TestSomethingElse2 is a third example that shows how you can use
// the Unset method to cleanup handlers and then add new ones.
func TestSomethingElse2(t *testing.T) {
	// create an instance of our test object
	testObj := new(MyMockedObject)

	// set up expectations with a placeholder in the argument list
	mockCall := testObj.On(&quot;DoSomething&quot;, mock.Anything).Return(true, nil)

	// call the code we are testing
	targetFuncThatDoesSomethingWithObj(testObj)

	// assert that the expectations were met
	testObj.AssertExpectations(t)

	// remove the handler now so we can add another one that takes precedence
	mockCall.Unset()

	// return false now instead of true
	testObj.On(&quot;DoSomething&quot;, mock.Anything).Return(false, nil)

	testObj.AssertExpectations(t)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For more information on how to write mock code, check out the &lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify/mock&quot;&gt;API documentation for the &lt;code&gt;mock&lt;/code&gt; package&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;You can use the &lt;a href=&quot;https://vektra.github.io/mockery/latest/&quot;&gt;mockery tool&lt;/a&gt; to autogenerate the mock code against an interface as well, making using mocks much quicker.&lt;/p&gt; 
&lt;h2&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify/suite&quot; title=&quot;API documentation&quot;&gt;&lt;code&gt;suite&lt;/code&gt;&lt;/a&gt; package&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;The suite package does not support parallel tests. See &lt;a href=&quot;https://github.com/stretchr/testify/issues/934&quot;&gt;#934&lt;/a&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;The &lt;code&gt;suite&lt;/code&gt; package provides functionality that you might be used to from more common object-oriented languages. With it, you can build a testing suite as a struct, build setup/teardown methods and testing methods on your struct, and run them with &#39;go test&#39; as per normal.&lt;/p&gt; 
&lt;p&gt;An example suite is shown below:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;// Basic imports
import (
	&quot;testing&quot;

	&quot;github.com/stretchr/testify/assert&quot;
	&quot;github.com/stretchr/testify/suite&quot;
)

// Define the suite, and absorb the built-in basic suite
// functionality from testify - including a T() method which
// returns the current testing context
type ExampleTestSuite struct {
	suite.Suite
	VariableThatShouldStartAtFive int
}

// Make sure that VariableThatShouldStartAtFive is set to five
// before each test
func (suite *ExampleTestSuite) SetupTest() {
	suite.VariableThatShouldStartAtFive = 5
}

// All methods that begin with &quot;Test&quot; are run as tests within a
// suite.
func (suite *ExampleTestSuite) TestExample() {
	assert.Equal(suite.T(), 5, suite.VariableThatShouldStartAtFive)
}

// In order for &#39;go test&#39; to run this suite, we need to create
// a normal test function and pass our suite to suite.Run
func TestExampleTestSuite(t *testing.T) {
	suite.Run(t, new(ExampleTestSuite))
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For a more complete example, using all of the functionality provided by the suite package, look at our &lt;a href=&quot;https://github.com/stretchr/testify/raw/master/suite/suite_test.go&quot;&gt;example testing suite&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;For more information on writing suites, check out the &lt;a href=&quot;https://pkg.go.dev/github.com/stretchr/testify/suite&quot;&gt;API documentation for the &lt;code&gt;suite&lt;/code&gt; package&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;Suite&lt;/code&gt; object has assertion methods:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;// Basic imports
import (
	&quot;testing&quot;

	&quot;github.com/stretchr/testify/suite&quot;
)

// Define the suite, and absorb the built-in basic suite
// functionality from testify - including assertion methods.
type ExampleTestSuite struct {
	suite.Suite
	VariableThatShouldStartAtFive int
}

// Make sure that VariableThatShouldStartAtFive is set to five
// before each test
func (suite *ExampleTestSuite) SetupTest() {
	suite.VariableThatShouldStartAtFive = 5
}

// All methods that begin with &quot;Test&quot; are run as tests within a
// suite.
func (suite *ExampleTestSuite) TestExample() {
	suite.Equal(suite.VariableThatShouldStartAtFive, 5)
}

// In order for &#39;go test&#39; to run this suite, we need to create
// a normal test function and pass our suite to suite.Run
func TestExampleTestSuite(t *testing.T) {
	suite.Run(t, new(ExampleTestSuite))
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Installation&lt;/h1&gt; 
&lt;p&gt;To install Testify, use &lt;code&gt;go get&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;go get github.com/stretchr/testify
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will then make the following packages available to you:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;github.com/stretchr/testify/assert
github.com/stretchr/testify/require
github.com/stretchr/testify/mock
github.com/stretchr/testify/suite
github.com/stretchr/testify/http (deprecated)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Import the &lt;code&gt;testify/assert&lt;/code&gt; package into your code using this template:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package yours

import (
	&quot;testing&quot;

	&quot;github.com/stretchr/testify/assert&quot;
)

func TestSomething(t *testing.T) {
	assert.True(t, true, &quot;True is true!&quot;)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Staying up to date&lt;/h1&gt; 
&lt;p&gt;To update Testify to the latest version, use &lt;code&gt;go get -u github.com/stretchr/testify&lt;/code&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Supported go versions&lt;/h1&gt; 
&lt;p&gt;We currently support the most recent major Go versions from 1.19 onward.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Contributing&lt;/h1&gt; 
&lt;p&gt;Please feel free to submit issues, fork the repository and send pull requests!&lt;/p&gt; 
&lt;p&gt;When submitting an issue, we ask that you please include a complete test function that demonstrates the issue. Extra credit for those using Testify to write the test code that demonstrates it.&lt;/p&gt; 
&lt;p&gt;Code generation is used. &lt;a href=&quot;https://github.com/search?q=repo%3Astretchr%2Ftestify%20%22Code%20generated%20with%22&amp;amp;type=code&quot;&gt;Look for &lt;code&gt;Code generated with&lt;/code&gt;&lt;/a&gt; at the top of some files. Run &lt;code&gt;go generate ./...&lt;/code&gt; to update generated files.&lt;/p&gt; 
&lt;p&gt;We also chat on the &lt;a href=&quot;https://gophers.slack.com&quot;&gt;Gophers Slack&lt;/a&gt; group in the &lt;code&gt;#testify&lt;/code&gt; and &lt;code&gt;#testify-dev&lt;/code&gt; channels.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;License&lt;/h1&gt; 
&lt;p&gt;This project is licensed under the terms of the MIT license.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/33f6acdd63ba9b7e95cb2d4bb272f04c7124938c14b5c2ca621c7ec667cf9a35/stretchr/testify" medium="image" />
      
    </item>
    
    <item>
      <title>chaos-mesh/chaos-mesh</title>
      <link>https://github.com/chaos-mesh/chaos-mesh</link>
      <description>&lt;p&gt;A Chaos Engineering Platform for Kubernetes.&lt;/p&gt;&lt;hr&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/logo.svg#gh-light-mode-only&quot; alt=&quot;Chaos Mesh Logo&quot; width=&quot;450&quot; /&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/logo-white.svg#gh-dark-mode-only&quot; alt=&quot;Chaos Mesh Logo&quot; width=&quot;450&quot; /&gt; 
&lt;hr /&gt; 
&lt;!-- markdown-link-check-disable --&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/chaos-mesh/chaos-mesh/raw/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/chaos-mesh/chaos-mesh.svg?sanitize=true&quot; alt=&quot;LICENSE&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/chaos-mesh/chaos-mesh&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/chaos-mesh/chaos-mesh/branch/master/graph/badge.svg?sanitize=true&quot; alt=&quot;codecov&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/chaos-mesh/chaos-mesh&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/chaos-mesh/chaos-mesh&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://godoc.org/github.com/chaos-mesh/chaos-mesh&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Godoc-reference-blue.svg?sanitize=true&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chaos-mesh/chaos-mesh/actions/workflows/upload_image.yml&quot;&gt;&lt;img src=&quot;https://github.com/chaos-mesh/chaos-mesh/actions/workflows/upload_image.yml/badge.svg?event=schedule&quot; alt=&quot;Upload Image&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://app.fossa.com/projects/git%2Bgithub.com%2Fchaos-mesh%2Fchaos-mesh?ref=badge_shield&quot;&gt;&lt;img src=&quot;https://app.fossa.com/api/projects/git%2Bgithub.com%2Fchaos-mesh%2Fchaos-mesh.svg?type=shield&quot; alt=&quot;FOSSA Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/3680&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/3680/badge&quot; alt=&quot;CII Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://artifacthub.io/packages/helm/chaos-mesh/chaos-mesh&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https%3A%2F%2Fartifacthub.io%2Fbadge%2Frepository%2Fchaos-mesh&quot; alt=&quot;Artifact Hub&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!-- markdown-link-check-enable --&gt; 
&lt;p&gt;Chaos Mesh is an open source cloud-native Chaos Engineering platform. It offers various types of fault simulation and has an enormous capability to orchestrate fault scenarios.&lt;/p&gt; 
&lt;p&gt;Using Chaos Mesh, you can conveniently simulate various abnormalities that might occur in reality during the development, testing, and production environments and find potential problems in the system. To lower the threshold for a Chaos Engineering project, Chaos Mesh provides you with a visualization operation. You can easily design your Chaos scenarios on the Web UI and monitor the status of Chaos experiments.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/cncf.png#gh-light-mode-only&quot; alt=&quot;cncf_logo&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/cncf-white.png#gh-dark-mode-only&quot; alt=&quot;cncf_logo&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Chaos Mesh is a &lt;a href=&quot;https://www.cncf.io/&quot;&gt;Cloud Native Computing Foundation (CNCF)&lt;/a&gt; incubating project. If you are an organization that wants to help shape the evolution of technologies that are container-packaged, dynamically-scheduled and microservices-oriented, consider joining the CNCF. For details about who&#39;s involved and how Chaos Mesh plays a role, read the CNCF &lt;a href=&quot;https://www.cncf.io/announcements/2020/09/02/cloud-native-computing-foundation-announces-tikv-graduation/&quot;&gt;announcement&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;At the current stage, Chaos Mesh has the following components:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Chaos Operator&lt;/strong&gt;: the core component for chaos orchestration. Fully open sourced.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Chaos Dashboard&lt;/strong&gt;: a Web UI for managing, designing, monitoring Chaos Experiments.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See the following demo video for a quick view of Chaos Mesh:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ifZEwdJO868&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/demo.gif&quot; alt=&quot;Watch the video&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Chaos Operator&lt;/h2&gt; 
&lt;p&gt;Chaos Operator injects chaos into the applications and Kubernetes infrastructure in a manageable way, which provides easy, custom definitions for chaos experiments and automatic orchestration. There are two components at play:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Chaos Controller Manager&lt;/strong&gt;: is primarily responsible for the scheduling and management of Chaos experiments. This component contains several CRD Controllers, such as Workflow Controller, Scheduler Controller, and Controllers of various fault types.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Chaos Daemon&lt;/strong&gt;: runs as DaemonSet and has Privileged permission by default (which can be disabled). This component mainly interferes with specific network devices, file systems, kernels by hacking into the target Pod Namespace.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/chaos-mesh.png&quot; alt=&quot;Chaos Operator&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Chaos Operator uses &lt;a href=&quot;https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/&quot;&gt;CustomResourceDefinition (CRD)&lt;/a&gt; to define chaos objects.&lt;/p&gt; 
&lt;p&gt;The current implementation supports a few types of CRD objects for fault injection, namely &lt;code&gt;PodChaos&lt;/code&gt;, &lt;code&gt;NetworkChaos&lt;/code&gt;, &lt;code&gt;IOChaos&lt;/code&gt;, &lt;code&gt;TimeChaos&lt;/code&gt;, &lt;code&gt;StressChaos&lt;/code&gt;, and so on. You can get the full list of CRD objects and their specifications in the &lt;a href=&quot;https://chaos-mesh.org/docs/&quot;&gt;Chaos Mesh Docs&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Quick start&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://chaos-mesh.org/docs/quick-start&quot;&gt;Quick Start&lt;/a&gt; and &lt;a href=&quot;https://chaos-mesh.org/docs/production-installation-using-helm/&quot;&gt;Install Chaos Mesh using Helm&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/CONTRIBUTING.md&quot;&gt;contributing guide&lt;/a&gt; and &lt;a href=&quot;https://chaos-mesh.org/docs/developer-guide-overview&quot;&gt;development guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Adopters&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/ADOPTERS.md&quot;&gt;ADOPTERS&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Blogs&lt;/h2&gt; 
&lt;p&gt;Blogs on Chaos Mesh design &amp;amp; implementation, features, chaos engineering, community updates, etc. See &lt;a href=&quot;https://chaos-mesh.org/blog&quot;&gt;Chaos Mesh Blogs&lt;/a&gt;. Here are some recommended ones for you to start with:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chaos-mesh.org/blog/chaos-mesh-2.0-to-a-chaos-engineering-ecology/&quot;&gt;Chaos Mesh 2.0: To a Chaos Engineering Ecology&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chaos-mesh.org/blog/chaos_mesh_your_chaos_engineering_solution/&quot;&gt;Chaos Mesh - Your Chaos Engineering Solution for System Resiliency on Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chaos-mesh.org/blog/run_your_first_chaos_experiment/&quot;&gt;Run Your First Chaos Experiment in 10 Minutes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chaos-mesh.org/blog/how-to-simulate-io-faults-at-runtime/&quot;&gt;How to Simulate I/O Faults at Runtime&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chaos-mesh.org/blog/simulating-clock-skew-in-k8s-without-affecting-other-containers-on-node/&quot;&gt;Simulating Clock Skew in K8s Without Affecting Other Containers on the Node&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chaos-mesh.org/blog/building_automated_testing_framework&quot;&gt;Building an Automated Testing Framework Based on Chaos Mesh and Argo&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;Please reach out for bugs, feature requests, and other issues via:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Following us on Twitter &lt;a href=&quot;https://twitter.com/chaos_mesh&quot;&gt;@chaos_mesh&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Joining the &lt;code&gt;#project-chaos-mesh&lt;/code&gt; channel in the &lt;a href=&quot;https://slack.cncf.io/&quot;&gt;CNCF Slack&lt;/a&gt; workspace.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Filling an issue or opening a PR against this repository.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Community meetings&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Chaos Mesh Community Monthly (Community and project-level updates, community sharing/demo, office hours)&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Time: on the fourth Thursday of every month (unless otherwise specified)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://community.cncf.io/chaos-mesh-community/&quot;&gt;RSVP here&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://docs.google.com/document/d/1H8IfmhIJiJ1ltg-XLjqR_P_RaMHUGrl1CzvHnKM_9Sc/edit?usp=sharing&quot;&gt;Meeting minutes&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Chaos Mesh Development Meeting (Releases, roadmap/features/RFC planning and discussion, issue triage/discussion, etc)&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Time: Every other Tuesday (unless otherwise specified)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://community.cncf.io/chaos-mesh-community/&quot;&gt;RSVP here&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://docs.google.com/document/d/1s9X6tTOy3OGZaLDZQesGw1BNOrxQfWExjBFIn5irpPE/edit&quot;&gt;Meeting minutes&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Community blogs&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Grant Tarrant-Fisher: &lt;a href=&quot;https://medium.com/search?q=Integrate+your+Reliability+Toolkit+with+Your+World&quot;&gt;Integrate your Reliability Toolkit with Your World&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Yoshinori Teraoka: &lt;a href=&quot;https://medium.com/sreake-jp/chaos-mesh-%E3%81%AB%E3%82%88%E3%82%8B%E3%82%AB%E3%82%AA%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0-46fa2897c742&quot;&gt;Streake: Chaos Mesh によるカオスエンジニアリング&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Sébastien Prud&#39;homme: &lt;a href=&quot;https://www.cowboysysop.com/post/chaos-mesh-un-generateur-de-chaos-pour-kubernetes/&quot;&gt;Chaos Mesh : un générateur de chaos pour Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Craig Morten 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://dev.to/craigmorten/k8s-chaos-dive-2-chaos-mesh-part-1-2i96&quot;&gt;K8s Chaos Dive: Chaos-Mesh Part 1&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://dev.to/craigmorten/k8s-chaos-dive-chaos-mesh-part-2-536m&quot;&gt;K8s Chaos Dive: Chaos-Mesh Part 2&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Ronak Banka: &lt;a href=&quot;https://itnext.io/getting-started-with-chaos-mesh-and-kubernetes-bfd98d25d481&quot;&gt;Getting Started with Chaos Mesh and Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;kondoumh: &lt;a href=&quot;https://blog.kondoumh.com/entry/2020/10/23/123431&quot;&gt;​Kubernetes ネイティブなカオスエンジニアリングツール Chaos Mesh を使ってみる&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Vadim Tkachenko: &lt;a href=&quot;https://www.percona.com/blog/2020/11/05/chaosmesh-to-create-chaos-in-kubernetes/&quot;&gt;ChaosMesh to Create Chaos in Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hui Zhang: &lt;a href=&quot;https://chaos-mesh.org/blog/how-a-top-game-company-uses-chaos-engineering-to-improve-testing&quot;&gt;How a Top Game Company Uses Chaos Engineering to Improve Testing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Anurag Paliwal 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://anuragpaliwal-93749.medium.com/securing-tenant-services-while-using-chaos-mesh-using-opa-3ae80c7f4b85&quot;&gt;Securing tenant services while using chaos mesh using OPA&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://anuragpaliwal-93749.medium.com/securing-namespaces-using-restrict-authorization-feature-in-chaos-mesh-2e110c3e0fb7&quot;&gt;Securing namespaces using restrict authorization feature in chaos mesh&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Pavan Kumar: &lt;a href=&quot;https://link.medium.com/1V90dEknugb&quot;&gt;Chaos Engineering in Kubernetes using Chaos Mesh&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Jessica Cherry: &lt;a href=&quot;https://opensource.com/article/21/6/chaos-mesh-kubernetes&quot;&gt;Test your Kubernetes experiments with an open source web interface&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;λ.eranga: &lt;a href=&quot;https://medium.com/rahasak/chaos-engineering-with-chaos-mesh-b040169b51bd&quot;&gt;Chaos Engineering with Chaos Mesh&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Tomáš Kubica: &lt;a href=&quot;https://www.tomaskubica.cz/post/2021/kubernetes-prakticky-zlounstvi-s-chaos-mesh-a-azure-chaos-studio2/&quot;&gt;Kubernetes prakticky: zlounství s Chaos Mesh a Azure Chaos Studio&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;mend: &lt;a href=&quot;https://qiita.com/mend/items/dcdfab5e980467bf58e9&quot;&gt;Chaos Meshで何ができるのか見てみた&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Community talks&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Twain Taylor: &lt;a href=&quot;https://youtu.be/shbrjAY86ZQ&quot;&gt;Chaos Mesh Simplifies &amp;amp; Organizes Chaos Engineering For Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Saiyam Pathak 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://youtu.be/kMbTYItsTTI&quot;&gt;Let&#39;s explore chaos mesh&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://youtu.be/HAU_cjW1bMw&quot;&gt;Chaos Mesh - Chaos Engineering for Kubernetes&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://youtu.be/HmQ9cFwxF7g&quot;&gt;Chaos Mesh 2.0&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Media coverage&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;CodeZine: &lt;a href=&quot;https://codezine.jp/article/detail/12996&quot;&gt;オープンソースのカオステストツール「Chaos Mesh 1.0」、一般提供を開始&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;@IT atmarkit: &lt;a href=&quot;https://www.atmarkit.co.jp/ait/articles/2010/09/news108.html&quot;&gt;Kubernetes 向けカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」が公開&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Publickey: &lt;a href=&quot;https://www.publickey1.jp/blog/20/kubernetespodchaos_mesh10.html&quot;&gt;Kubernetes の Pod やネットワークをわざと落としまくってカオスエンジニアリングのテストができる「Chaos Mesh」がバージョン 1.0 に到達&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;InfoQ: &lt;a href=&quot;https://www.infoq.com/news/2020/10/kubernetes-chaos-mesh-ga/&quot;&gt;Chaos Engineering on Kubernetes : Chaos Mesh Generally Available with v1.0&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;TechGenix: &lt;a href=&quot;http://techgenix.com/chaos-mesh-chaos-engineering/&quot;&gt;Chaos Mesh Promises to Bring Order to Chaos Engineering&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Chaos Mesh is licensed under the Apache License, Version 2.0. See &lt;a href=&quot;https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for the full content.&lt;/p&gt; 
&lt;!-- markdown-link-check-disable-next-line --&gt; 
&lt;p&gt;&lt;a href=&quot;https://app.fossa.com/projects/git%2Bgithub.com%2Fchaos-mesh%2Fchaos-mesh?ref=badge_large&quot;&gt;&lt;img src=&quot;https://app.fossa.com/api/projects/git%2Bgithub.com%2Fchaos-mesh%2Fchaos-mesh.svg?type=large&quot; alt=&quot;FOSSA Status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Trademark&lt;/h2&gt; 
&lt;p&gt;Chaos Mesh is a trademark of The Linux Foundation. All rights reserved.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/206213815/71637e67-12be-4d78-8739-b6b576fedc4b" medium="image" />
      
    </item>
    
    <item>
      <title>NVIDIA/gpu-operator</title>
      <link>https://github.com/NVIDIA/gpu-operator</link>
      <description>&lt;p&gt;NVIDIA GPU Operator creates, configures, and manages GPUs in Kubernetes&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/NVIDIA/gpu-operator/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/NVIDIA/gpu-operator?style=flat-square&quot; alt=&quot;license&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitlab.com/nvidia/kubernetes/gpu-operator/-/pipelines&quot;&gt;&lt;img src=&quot;https://gitlab.com/nvidia/kubernetes/gpu-operator/badges/master/pipeline.svg?sanitize=true&quot; alt=&quot;pipeline status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitlab.com/nvidia/kubernetes/gpu-operator/-/pipelines&quot;&gt;&lt;img src=&quot;https://gitlab.com/nvidia/kubernetes/gpu-operator/badges/master/coverage.svg?sanitize=true&quot; alt=&quot;coverage report&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;NVIDIA GPU Operator&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/egx/nvidia-egx-platform-gold-image-full-2c50-d@2x.jpg&quot; alt=&quot;nvidia-gpu-operator&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Kubernetes provides access to special hardware resources such as NVIDIA GPUs, NICs, Infiniband adapters and other devices through the &lt;a href=&quot;https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/&quot;&gt;device plugin framework&lt;/a&gt;. However, configuring and managing nodes with these hardware resources requires configuration of multiple software components such as drivers, container runtimes or other libraries which are difficult and prone to errors. The NVIDIA GPU Operator uses the &lt;a href=&quot;https://cloud.redhat.com/blog/introducing-the-operator-framework&quot;&gt;operator framework&lt;/a&gt; within Kubernetes to automate the management of all NVIDIA software components needed to provision GPU. These components include the NVIDIA drivers (to enable CUDA), Kubernetes device plugin for GPUs, the NVIDIA Container Runtime, automatic node labelling, &lt;a href=&quot;https://developer.nvidia.com/dcgm&quot;&gt;DCGM&lt;/a&gt; based monitoring and others.&lt;/p&gt; 
&lt;h2&gt;Audience and Use-Cases&lt;/h2&gt; 
&lt;p&gt;The GPU Operator allows administrators of Kubernetes clusters to manage GPU nodes just like CPU nodes in the cluster. Instead of provisioning a special OS image for GPU nodes, administrators can rely on a standard OS image for both CPU and GPU nodes and then rely on the GPU Operator to provision the required software components for GPUs.&lt;/p&gt; 
&lt;p&gt;Note that the GPU Operator is specifically useful for scenarios where the Kubernetes cluster needs to scale quickly - for example provisioning additional GPU nodes on the cloud or on-prem and managing the lifecycle of the underlying software components. Since the GPU Operator runs everything as containers including NVIDIA drivers, the administrators can easily swap various components - simply by starting or stopping containers.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;This section provides a quick guide for deploying the GPU Operator with the data center driver.&lt;/p&gt; 
&lt;p&gt;Make sure your Kubernetes cluster meets the &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html#prerequisites&quot;&gt;prerequisites&lt;/a&gt; and is listed on the &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/platform-support.html#supported-operating-systems-and-kubernetes-platforms&quot;&gt;platform support page&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Step 1: Add the NVIDIA Helm repository&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
    &amp;amp;&amp;amp; helm repo update
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Step 2: Deploy GPU Operator&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm install --wait --generate-name \
    -n gpu-operator --create-namespace \
    nvidia/gpu-operator
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After installation, the GPU Operator and its operands should be up and running.&lt;/p&gt; 
&lt;p&gt;Note: To deploy the GPU Operator on OpenShift, follow the instructions in the &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/openshift/latest/steps-overview.html&quot;&gt;official documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Product Documentation&lt;/h2&gt; 
&lt;p&gt;For information on platform support and getting started, visit the official documentation &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/overview.html&quot;&gt;repository&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Support the latest NVIDIA Data Center GPUs, systems, and drivers.&lt;/li&gt; 
 &lt;li&gt;Support RHEL 10.&lt;/li&gt; 
 &lt;li&gt;Support KubeVirt with Ubuntu 24.04.&lt;/li&gt; 
 &lt;li&gt;Promote the &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/gpu-driver-configuration.html&quot;&gt;NVIDIADriver&lt;/a&gt; CRD to General Availability (GA).&lt;/li&gt; 
 &lt;li&gt;Integrate &lt;a href=&quot;https://github.com/NVIDIA/k8s-dra-driver-gpu&quot;&gt;NVIDIA’s DRA Driver for GPUs&lt;/a&gt; as a managed component of the GPU Operator.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Webinar&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://info.nvidia.com/how-to-use-gpus-on-kubernetes-webinar.html&quot;&gt;How to easily use GPUs on Kubernetes&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Contributions&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/NVIDIA/gpu-operator/raw/master/CONTRIBUTING.md&quot;&gt;Read the document on contributions&lt;/a&gt;. You can contribute by opening a &lt;a href=&quot;https://help.github.com/en/articles/about-pull-requests&quot;&gt;pull request&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Support and Getting Help&lt;/h2&gt; 
&lt;p&gt;Please open &lt;a href=&quot;https://github.com/NVIDIA/gpu-operator/issues/new&quot;&gt;an issue on the GitHub project&lt;/a&gt; for any questions. Your feedback is appreciated.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/6df7e4efc6800aaf43b3286d720407311ee11b3bd9389b3808593d8cfb33ad7e/NVIDIA/gpu-operator" medium="image" />
      
    </item>
    
    <item>
      <title>envoyproxy/gateway</title>
      <link>https://github.com/envoyproxy/gateway</link>
      <description>&lt;p&gt;Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Envoy Gateway&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://securityscorecards.dev/viewer/?uri=github.com/envoyproxy/gateway&quot;&gt;&lt;img src=&quot;https://api.securityscorecards.dev/projects/github.com/envoyproxy/gateway/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/envoyproxy/gateway/actions/workflows/build_and_test.yaml&quot;&gt;&lt;img src=&quot;https://github.com/envoyproxy/gateway/actions/workflows/build_and_test.yaml/badge.svg?sanitize=true&quot; alt=&quot;Build and Test&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/envoyproxy/gateway&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/envoyproxy/gateway/branch/main/graph/badge.svg?sanitize=true&quot; alt=&quot;codecov&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/envoyproxy/gateway/actions/workflows/codeql.yml&quot;&gt;&lt;img src=&quot;https://github.com/envoyproxy/gateway/actions/workflows/codeql.yml/badge.svg?sanitize=true&quot; alt=&quot;CodeQL&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/envoyproxy/gateway/actions/workflows/osv-scanner.yml&quot;&gt;&lt;img src=&quot;https://github.com/envoyproxy/gateway/actions/workflows/osv-scanner.yml/badge.svg?sanitize=true&quot; alt=&quot;OSV-Scanner&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/envoyproxy/gateway/actions/workflows/trivy.yml&quot;&gt;&lt;img src=&quot;https://github.com/envoyproxy/gateway/actions/workflows/trivy.yml/badge.svg?sanitize=true&quot; alt=&quot;Trivy&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/cncf/artwork/raw/main/projects/envoy/envoy-gateway/horizontal/color/envoy-gateway-horizontal-color.svg?sanitize=true&quot; alt=&quot;Envoy Gateway Logo&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Envoy Gateway is an open source project for managing Envoy Proxy as a standalone or Kubernetes-based application gateway. &lt;a href=&quot;https://gateway-api.sigs.k8s.io&quot;&gt;Gateway API&lt;/a&gt; resources are used to dynamically provision and configure the managed Envoy Proxies.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://blog.envoyproxy.io/introducing-envoy-gateway-ad385cc59532&quot;&gt;Blog&lt;/a&gt; introducing Envoy Gateway.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/envoyproxy/gateway/main/GOALS.md&quot;&gt;Goals&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gateway.envoyproxy.io/latest/tasks/quickstart/&quot;&gt;Quickstart&lt;/a&gt; to use Envoy Gateway in a few simple steps.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gateway.envoyproxy.io/community/roadmap/&quot;&gt;Roadmap&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gateway.envoyproxy.io/news/releases/matrix/&quot;&gt;Compatibility Matrix&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contact&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://groups.google.com/g/envoy-gateway-announce&quot;&gt;envoy-gateway-announce&lt;/a&gt;: Join our mailing list to receive important announcements.&lt;/li&gt; 
 &lt;li&gt;Slack: Join the &lt;a href=&quot;https://communityinviter.com/apps/envoyproxy/envoy&quot;&gt;Envoy Slack workspace&lt;/a&gt; if you&#39;re not already a member. Otherwise, use the &lt;a href=&quot;https://envoyproxy.slack.com/archives/C03E6NHLESV&quot;&gt;Envoy Gateway channel&lt;/a&gt; to start collaborating with the community.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/envoyproxy/gateway/main/CODE_OF_CONDUCT.md&quot;&gt;Code of conduct&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gateway.envoyproxy.io/community/contributing/&quot;&gt;Contributing guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gateway.envoyproxy.io/community/develop/&quot;&gt;Developer guide&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Security Reporting&lt;/h2&gt; 
&lt;p&gt;If you&#39;ve found a security vulnerability or a process crash, please follow the instructions in &lt;a href=&quot;https://raw.githubusercontent.com/envoyproxy/gateway/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt; to submit a report.&lt;/p&gt; 
&lt;h2&gt;Community Meeting&lt;/h2&gt; 
&lt;p&gt;Envoy Gateway contributor meetings are held on Thursdays and alternate weekly between EU-friendly and APAC-friendly times.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;EU-friendly: Thursdays at 7:00 AM PST / 10:00 AM EST / 4:00 PM CET. &lt;a href=&quot;https://calendar.google.com/calendar/event?action=TEMPLATE&amp;amp;tmeid=djQ1NWRhM2xjbG5vdGdpbXZibHM5MWxiOWdfMjAyNTEyMTFUMTUwMDAwWiA4YnNmYzhtMmRmOG1hZDJqdGdmNmY4b25qNEBn&amp;amp;tmsrc=8bsfc8m2df8mad2jtgf6f8onj4%40group.calendar.google.com&amp;amp;scp=ALL&quot;&gt;Add to your calendar&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;APAC-friendly: Thursdays at 4:00 PM PST / 7:00 PM EST / 8:00 AM CST. &lt;a href=&quot;https://calendar.google.com/calendar/event?action=TEMPLATE&amp;amp;tmeid=MW80N2FmZDhyZmZoNnBrbTdnbnN1Y3M0dGJfMjAyNTEyMTlUMDAwMDAwWiA4YnNmYzhtMmRmOG1hZDJqdGdmNmY4b25qNEBn&amp;amp;tmsrc=8bsfc8m2df8mad2jtgf6f8onj4%40group.calendar.google.com&amp;amp;scp=ALL&quot;&gt;Add to your calendar&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Full Envoy community calendar is available &lt;a href=&quot;https://calendar.google.com/calendar/u/0/embed?src=8bsfc8m2df8mad2jtgf6f8onj4@group.calendar.google.com&amp;amp;ctz=America/Chicago&quot;&gt;here&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Meeting notes and agenda: &lt;a href=&quot;https://docs.google.com/document/d/1i5wa1VsxIbQw7jbWvGmvy8C4Zpp7SGV1aVViSLgqU4M/edit?usp=sharing&quot;&gt;Meeting details&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/9bff93502fbd188d7a04018aea5b87ad62e187882c93af2e51271d7c258153de/envoyproxy/gateway" medium="image" />
      
    </item>
    
    <item>
      <title>go-playground/validator</title>
      <link>https://github.com/go-playground/validator</link>
      <description>&lt;p&gt;💯Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Package validator&lt;/h1&gt; 
&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;https://raw.githubusercontent.com/go-playground/validator/master/logo.png&quot; /&gt;&lt;a href=&quot;https://github.com/go-playground/validator/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/go-playground/validator&quot; alt=&quot;GitHub release (latest SemVer)&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/go-playground/validator/actions&quot;&gt;&lt;img src=&quot;https://github.com/go-playground/validator/actions/workflows/workflow.yml/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://coveralls.io/github/go-playground/validator?branch=master&quot;&gt;&lt;img src=&quot;https://coveralls.io/repos/go-playground/validator/badge.svg?branch=master&amp;amp;service=github&quot; alt=&quot;Coverage Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/go-playground/validator&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/go-playground/validator&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/github.com/go-playground/validator/v10&quot;&gt;&lt;img src=&quot;https://godoc.org/github.com/go-playground/validator?status.svg?sanitize=true&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/dub/l/vibe-d.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Package validator implements value validations for structs and individual fields based on tags.&lt;/p&gt; 
&lt;p&gt;It has the following &lt;strong&gt;unique&lt;/strong&gt; features:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Cross Field and Cross Struct validations by using validation tags or custom validators.&lt;/li&gt; 
 &lt;li&gt;Slice, Array and Map diving, which allows any or all levels of a multidimensional field to be validated.&lt;/li&gt; 
 &lt;li&gt;Ability to dive into both map keys and values for validation&lt;/li&gt; 
 &lt;li&gt;Handles type interface by determining it&#39;s underlying type prior to validation.&lt;/li&gt; 
 &lt;li&gt;Handles custom field types such as sql driver &lt;a href=&quot;https://golang.org/src/database/sql/driver/types.go?s=1210:1293#L29&quot;&gt;Valuer&lt;/a&gt; and the &lt;a href=&quot;https://github.com/go-playground/validator/raw/master/_examples/valuer/main.go&quot;&gt;Valuer interface&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Alias validation tags, which allows for mapping of several validations to a single tag for easier defining of validations on structs&lt;/li&gt; 
 &lt;li&gt;Extraction of custom defined Field Name e.g. can specify to extract the JSON name while validating and have it available in the resulting FieldError&lt;/li&gt; 
 &lt;li&gt;Customizable i18n aware error messages.&lt;/li&gt; 
 &lt;li&gt;Default validator for the &lt;a href=&quot;https://github.com/gin-gonic/gin&quot;&gt;gin&lt;/a&gt; web framework; upgrading from v8 to v9 in gin see &lt;a href=&quot;https://github.com/go-playground/validator/tree/master/_examples/gin-upgrading-overriding&quot;&gt;here&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;A Call for Maintainers&lt;/h2&gt; 
&lt;p&gt;Please read the discussion started &lt;a href=&quot;https://github.com/go-playground/validator/discussions/1330&quot;&gt;here&lt;/a&gt; if you are interested in contributing/helping maintain this package.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;Use go get.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;go get github.com/go-playground/validator/v10
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then import the validator package into your own code.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;import &quot;github.com/go-playground/validator/v10&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Error Return Value&lt;/h2&gt; 
&lt;p&gt;Validation functions return type error&lt;/p&gt; 
&lt;p&gt;They return type error to avoid the issue discussed in the following, where err is always != nil:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;http://stackoverflow.com/a/29138676/3158232&quot;&gt;http://stackoverflow.com/a/29138676/3158232&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/validator/issues/134&quot;&gt;https://github.com/go-playground/validator/issues/134&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Validator returns only InvalidValidationError for bad validation input, nil or ValidationErrors as type error; so, in your code all you need to do is check if the error returned is not nil, and if it&#39;s not check if error is InvalidValidationError ( if necessary, most of the time it isn&#39;t ) type cast it to type ValidationErrors like so:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;err := validate.Struct(mystruct)
var validationErrors validator.ValidationErrors
errors.As(err, &amp;amp;validationErrors)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Usage and documentation&lt;/h2&gt; 
&lt;p&gt;Please see &lt;a href=&quot;https://pkg.go.dev/github.com/go-playground/validator/v10&quot;&gt;https://pkg.go.dev/github.com/go-playground/validator/v10&lt;/a&gt; for detailed usage docs.&lt;/p&gt; 
&lt;h5&gt;Examples:&lt;/h5&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/validator/raw/master/_examples/simple/main.go&quot;&gt;Simple&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/validator/raw/master/_examples/custom/main.go&quot;&gt;Custom Field Types&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/validator/raw/master/_examples/struct-level/main.go&quot;&gt;Struct Level&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/validator/raw/master/_examples/translations/main.go&quot;&gt;Translations &amp;amp; Custom Errors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/validator/tree/v9/_examples/gin-upgrading-overriding&quot;&gt;Gin upgrade and/or override validator&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bluesuncorp/wash&quot;&gt;wash - an example application putting it all together&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Baked-in Validations&lt;/h2&gt; 
&lt;h3&gt;Special Notes:&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;If new to using validator it is highly recommended to initialize it using the &lt;code&gt;WithRequiredStructEnabled&lt;/code&gt; option which is opt-in to new behaviour that will become the default behaviour in v11+. See documentation for more details.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;validate := validator.New(validator.WithRequiredStructEnabled())
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Fields:&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;eqcsfield&lt;/td&gt; 
   &lt;td&gt;Field Equals Another Field (relative)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;eqfield&lt;/td&gt; 
   &lt;td&gt;Field Equals Another Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;fieldcontains&lt;/td&gt; 
   &lt;td&gt;Check the indicated characters are present in the Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;fieldexcludes&lt;/td&gt; 
   &lt;td&gt;Check the indicated characters are not present in the field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gtcsfield&lt;/td&gt; 
   &lt;td&gt;Field Greater Than Another Relative Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gtecsfield&lt;/td&gt; 
   &lt;td&gt;Field Greater Than or Equal To Another Relative Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gtefield&lt;/td&gt; 
   &lt;td&gt;Field Greater Than or Equal To Another Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gtfield&lt;/td&gt; 
   &lt;td&gt;Field Greater Than Another Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ltcsfield&lt;/td&gt; 
   &lt;td&gt;Less Than Another Relative Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ltecsfield&lt;/td&gt; 
   &lt;td&gt;Less Than or Equal To Another Relative Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ltefield&lt;/td&gt; 
   &lt;td&gt;Less Than or Equal To Another Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ltfield&lt;/td&gt; 
   &lt;td&gt;Less Than Another Field&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;necsfield&lt;/td&gt; 
   &lt;td&gt;Field Does Not Equal Another Field (relative)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;nefield&lt;/td&gt; 
   &lt;td&gt;Field Does Not Equal Another Field&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Network:&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;cidr&lt;/td&gt; 
   &lt;td&gt;Classless Inter-Domain Routing CIDR&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cidrv4&lt;/td&gt; 
   &lt;td&gt;Classless Inter-Domain Routing CIDRv4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cidrv6&lt;/td&gt; 
   &lt;td&gt;Classless Inter-Domain Routing CIDRv6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;datauri&lt;/td&gt; 
   &lt;td&gt;Data URL&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;fqdn&lt;/td&gt; 
   &lt;td&gt;Full Qualified Domain Name (FQDN)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hostname&lt;/td&gt; 
   &lt;td&gt;Hostname RFC 952&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hostname_rfc1123&lt;/td&gt; 
   &lt;td&gt;Hostname RFC 1123&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hostname_port&lt;/td&gt; 
   &lt;td&gt;HostPort&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;port&lt;/td&gt; 
   &lt;td&gt;Port number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ip&lt;/td&gt; 
   &lt;td&gt;Internet Protocol Address IP&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ip4_addr&lt;/td&gt; 
   &lt;td&gt;Internet Protocol Address IPv4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ip6_addr&lt;/td&gt; 
   &lt;td&gt;Internet Protocol Address IPv6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ip_addr&lt;/td&gt; 
   &lt;td&gt;Internet Protocol Address IP&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ipv4&lt;/td&gt; 
   &lt;td&gt;Internet Protocol Address IPv4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ipv6&lt;/td&gt; 
   &lt;td&gt;Internet Protocol Address IPv6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;mac&lt;/td&gt; 
   &lt;td&gt;Media Access Control Address MAC&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tcp4_addr&lt;/td&gt; 
   &lt;td&gt;Transmission Control Protocol Address TCPv4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tcp6_addr&lt;/td&gt; 
   &lt;td&gt;Transmission Control Protocol Address TCPv6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tcp_addr&lt;/td&gt; 
   &lt;td&gt;Transmission Control Protocol Address TCP&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;udp4_addr&lt;/td&gt; 
   &lt;td&gt;User Datagram Protocol Address UDPv4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;udp6_addr&lt;/td&gt; 
   &lt;td&gt;User Datagram Protocol Address UDPv6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;udp_addr&lt;/td&gt; 
   &lt;td&gt;User Datagram Protocol Address UDP&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;unix_addr&lt;/td&gt; 
   &lt;td&gt;Unix domain socket end point Address&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uds_exists&lt;/td&gt; 
   &lt;td&gt;Unix domain socket exists (checks filesystem sockets and Linux abstract sockets)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uri&lt;/td&gt; 
   &lt;td&gt;URI String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;url&lt;/td&gt; 
   &lt;td&gt;URL String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;http_url&lt;/td&gt; 
   &lt;td&gt;HTTP(s) URL String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;https_url&lt;/td&gt; 
   &lt;td&gt;HTTPS-only URL String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;origin&lt;/td&gt; 
   &lt;td&gt;Web origin (URL with HTTP(S) scheme and host, but no path/query/fragment)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;url_encoded&lt;/td&gt; 
   &lt;td&gt;URL Encoded&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;urn_rfc2141&lt;/td&gt; 
   &lt;td&gt;Urn RFC 2141 String&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Strings:&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;alpha&lt;/td&gt; 
   &lt;td&gt;Alpha Only&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;alphaspace&lt;/td&gt; 
   &lt;td&gt;Alpha Space&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;alphanum&lt;/td&gt; 
   &lt;td&gt;Alphanumeric&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;alphanumspace&lt;/td&gt; 
   &lt;td&gt;Alphanumeric Space&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;alphanumunicode&lt;/td&gt; 
   &lt;td&gt;Alphanumeric Unicode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;alphaunicode&lt;/td&gt; 
   &lt;td&gt;Alpha Unicode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ascii&lt;/td&gt; 
   &lt;td&gt;ASCII&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;boolean&lt;/td&gt; 
   &lt;td&gt;Boolean&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;contains&lt;/td&gt; 
   &lt;td&gt;Contains&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;containsany&lt;/td&gt; 
   &lt;td&gt;Contains Any&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;containsrune&lt;/td&gt; 
   &lt;td&gt;Contains Rune&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;endsnotwith&lt;/td&gt; 
   &lt;td&gt;Ends Not With&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;endswith&lt;/td&gt; 
   &lt;td&gt;Ends With&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excludes&lt;/td&gt; 
   &lt;td&gt;Excludes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excludesall&lt;/td&gt; 
   &lt;td&gt;Excludes All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excludesrune&lt;/td&gt; 
   &lt;td&gt;Excludes Rune&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;lowercase&lt;/td&gt; 
   &lt;td&gt;Lowercase&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;multibyte&lt;/td&gt; 
   &lt;td&gt;Multi-Byte Characters&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;number&lt;/td&gt; 
   &lt;td&gt;Number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;numeric&lt;/td&gt; 
   &lt;td&gt;Numeric&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;printascii&lt;/td&gt; 
   &lt;td&gt;Printable ASCII&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;startsnotwith&lt;/td&gt; 
   &lt;td&gt;Starts Not With&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;startswith&lt;/td&gt; 
   &lt;td&gt;Starts With&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uppercase&lt;/td&gt; 
   &lt;td&gt;Uppercase&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Format:&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;base64&lt;/td&gt; 
   &lt;td&gt;Base64 String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;base64url&lt;/td&gt; 
   &lt;td&gt;Base64URL String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;base64rawurl&lt;/td&gt; 
   &lt;td&gt;Base64RawURL String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;bic_iso_9362_2014&lt;/td&gt; 
   &lt;td&gt;Business Identifier Code (ISO 9362:2014)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;bic&lt;/td&gt; 
   &lt;td&gt;Business Identifier Code (ISO 9362:2022)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;bcp47_language_tag&lt;/td&gt; 
   &lt;td&gt;Language tag (BCP 47)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;bcp47_strict_language_tag&lt;/td&gt; 
   &lt;td&gt;Language tag (BCP 47), strictly following RFC 5646&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;btc_addr&lt;/td&gt; 
   &lt;td&gt;Bitcoin Address&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;btc_addr_bech32&lt;/td&gt; 
   &lt;td&gt;Bitcoin Bech32 Address (segwit)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;credit_card&lt;/td&gt; 
   &lt;td&gt;Credit Card Number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;mongodb&lt;/td&gt; 
   &lt;td&gt;MongoDB ObjectID&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;mongodb_connection_string&lt;/td&gt; 
   &lt;td&gt;MongoDB Connection String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cron&lt;/td&gt; 
   &lt;td&gt;Cron&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;spicedb&lt;/td&gt; 
   &lt;td&gt;SpiceDb ObjectID/Permission/Type&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;datetime&lt;/td&gt; 
   &lt;td&gt;Datetime&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;e164&lt;/td&gt; 
   &lt;td&gt;e164 formatted phone number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ein&lt;/td&gt; 
   &lt;td&gt;U.S. Employer Identification Number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;email&lt;/td&gt; 
   &lt;td&gt;E-mail String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;eth_addr&lt;/td&gt; 
   &lt;td&gt;Ethereum Address&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hexadecimal&lt;/td&gt; 
   &lt;td&gt;Hexadecimal String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hexcolor&lt;/td&gt; 
   &lt;td&gt;Hexcolor String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hsl&lt;/td&gt; 
   &lt;td&gt;HSL String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;hsla&lt;/td&gt; 
   &lt;td&gt;HSLA String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cmyk&lt;/td&gt; 
   &lt;td&gt;CMYK String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;html&lt;/td&gt; 
   &lt;td&gt;HTML Tags&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;html_encoded&lt;/td&gt; 
   &lt;td&gt;HTML Encoded&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;isbn&lt;/td&gt; 
   &lt;td&gt;International Standard Book Number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;isbn10&lt;/td&gt; 
   &lt;td&gt;International Standard Book Number 10&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;isbn13&lt;/td&gt; 
   &lt;td&gt;International Standard Book Number 13&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;issn&lt;/td&gt; 
   &lt;td&gt;International Standard Serial Number&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iso3166_1_alpha2&lt;/td&gt; 
   &lt;td&gt;Two-letter country code (ISO 3166-1 alpha-2)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iso3166_1_alpha3&lt;/td&gt; 
   &lt;td&gt;Three-letter country code (ISO 3166-1 alpha-3)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iso3166_1_alpha_numeric&lt;/td&gt; 
   &lt;td&gt;Numeric country code (ISO 3166-1 numeric)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iso3166_2&lt;/td&gt; 
   &lt;td&gt;Country subdivision code (ISO 3166-2)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iso4217&lt;/td&gt; 
   &lt;td&gt;Currency code (ISO 4217)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;json&lt;/td&gt; 
   &lt;td&gt;JSON&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;jwt&lt;/td&gt; 
   &lt;td&gt;JSON Web Token (JWT)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;latitude&lt;/td&gt; 
   &lt;td&gt;Latitude&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;longitude&lt;/td&gt; 
   &lt;td&gt;Longitude&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;luhn_checksum&lt;/td&gt; 
   &lt;td&gt;Luhn Algorithm Checksum (for strings and (u)int)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;postcode_iso3166_alpha2&lt;/td&gt; 
   &lt;td&gt;Postcode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;postcode_iso3166_alpha2_field&lt;/td&gt; 
   &lt;td&gt;Postcode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;rgb&lt;/td&gt; 
   &lt;td&gt;RGB String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;rgba&lt;/td&gt; 
   &lt;td&gt;RGBA String&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ssn&lt;/td&gt; 
   &lt;td&gt;Social Security Number SSN&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;timezone&lt;/td&gt; 
   &lt;td&gt;Timezone&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid3&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID v3&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid3_rfc4122&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID v3 RFC4122&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid4&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID v4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid4_rfc4122&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID v4 RFC4122&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid5&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID v5&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid5_rfc4122&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID v5 RFC4122&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;uuid_rfc4122&lt;/td&gt; 
   &lt;td&gt;Universally Unique Identifier UUID RFC4122&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;md4&lt;/td&gt; 
   &lt;td&gt;MD4 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;md5&lt;/td&gt; 
   &lt;td&gt;MD5 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;sha256&lt;/td&gt; 
   &lt;td&gt;SHA256 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;sha384&lt;/td&gt; 
   &lt;td&gt;SHA384 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;sha512&lt;/td&gt; 
   &lt;td&gt;SHA512 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ripemd128&lt;/td&gt; 
   &lt;td&gt;RIPEMD-128 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ripemd128&lt;/td&gt; 
   &lt;td&gt;RIPEMD-160 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tiger128&lt;/td&gt; 
   &lt;td&gt;TIGER128 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tiger160&lt;/td&gt; 
   &lt;td&gt;TIGER160 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tiger192&lt;/td&gt; 
   &lt;td&gt;TIGER192 hash&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;semver&lt;/td&gt; 
   &lt;td&gt;Semantic Versioning 2.0.0&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ulid&lt;/td&gt; 
   &lt;td&gt;Universally Unique Lexicographically Sortable Identifier ULID&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cve&lt;/td&gt; 
   &lt;td&gt;Common Vulnerabilities and Exposures Identifier (CVE id)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Comparisons:&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;eq&lt;/td&gt; 
   &lt;td&gt;Equals&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;eq_ignore_case&lt;/td&gt; 
   &lt;td&gt;Equals ignoring case&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gt&lt;/td&gt; 
   &lt;td&gt;Greater than&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gte&lt;/td&gt; 
   &lt;td&gt;Greater than or equal&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;lt&lt;/td&gt; 
   &lt;td&gt;Less Than&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;lte&lt;/td&gt; 
   &lt;td&gt;Less Than or Equal&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ne&lt;/td&gt; 
   &lt;td&gt;Not Equal&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ne_ignore_case&lt;/td&gt; 
   &lt;td&gt;Not Equal ignoring case&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Other:&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;dir&lt;/td&gt; 
   &lt;td&gt;Existing Directory&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;dirpath&lt;/td&gt; 
   &lt;td&gt;Directory Path&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;file&lt;/td&gt; 
   &lt;td&gt;Existing File&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;filepath&lt;/td&gt; 
   &lt;td&gt;File Path&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;image&lt;/td&gt; 
   &lt;td&gt;Image&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;mimetype&lt;/td&gt; 
   &lt;td&gt;MIME Type&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;isdefault&lt;/td&gt; 
   &lt;td&gt;Is Default&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;len&lt;/td&gt; 
   &lt;td&gt;Length&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;max&lt;/td&gt; 
   &lt;td&gt;Maximum&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;min&lt;/td&gt; 
   &lt;td&gt;Minimum&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;oneof&lt;/td&gt; 
   &lt;td&gt;One Of&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;noneof&lt;/td&gt; 
   &lt;td&gt;None Of&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required&lt;/td&gt; 
   &lt;td&gt;Required&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required_if&lt;/td&gt; 
   &lt;td&gt;Required If&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required_unless&lt;/td&gt; 
   &lt;td&gt;Required Unless&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required_with&lt;/td&gt; 
   &lt;td&gt;Required With&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required_with_all&lt;/td&gt; 
   &lt;td&gt;Required With All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required_without&lt;/td&gt; 
   &lt;td&gt;Required Without&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;required_without_all&lt;/td&gt; 
   &lt;td&gt;Required Without All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excluded_if&lt;/td&gt; 
   &lt;td&gt;Excluded If&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excluded_unless&lt;/td&gt; 
   &lt;td&gt;Excluded Unless&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excluded_with&lt;/td&gt; 
   &lt;td&gt;Excluded With&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excluded_with_all&lt;/td&gt; 
   &lt;td&gt;Excluded With All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excluded_without&lt;/td&gt; 
   &lt;td&gt;Excluded Without&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;excluded_without_all&lt;/td&gt; 
   &lt;td&gt;Excluded Without All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;unique&lt;/td&gt; 
   &lt;td&gt;Unique&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;validateFn&lt;/td&gt; 
   &lt;td&gt;Verify if the method &lt;code&gt;Validate() error&lt;/code&gt; does not return an error (or any specified method)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Aliases:&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&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;iscolor&lt;/td&gt; 
   &lt;td&gt;hexcolor|rgb|rgba|hsl|hsla|cmyk&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;country_code&lt;/td&gt; 
   &lt;td&gt;iso3166_1_alpha2|iso3166_1_alpha3|iso3166_1_alpha_numeric&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Benchmarks&lt;/h2&gt; 
&lt;h6&gt;Run on MacBook Pro Max M3&lt;/h6&gt; 
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;go version go1.23.3 darwin/arm64
goos: darwin
goarch: arm64
cpu: Apple M3 Max
pkg: github.com/go-playground/validator/v10
BenchmarkFieldSuccess-16                                                42461943                27.88 ns/op            0 B/op          0 allocs/op
BenchmarkFieldSuccessParallel-16                                        486632887                2.289 ns/op           0 B/op          0 allocs/op
BenchmarkFieldFailure-16                                                 9566167               121.3 ns/op           200 B/op          4 allocs/op
BenchmarkFieldFailureParallel-16                                        17551471                83.68 ns/op          200 B/op          4 allocs/op
BenchmarkFieldArrayDiveSuccess-16                                        7602306               155.6 ns/op            97 B/op          5 allocs/op
BenchmarkFieldArrayDiveSuccessParallel-16                               20664610                59.80 ns/op           97 B/op          5 allocs/op
BenchmarkFieldArrayDiveFailure-16                                        4659756               252.9 ns/op           301 B/op         10 allocs/op
BenchmarkFieldArrayDiveFailureParallel-16                                8010116               152.9 ns/op           301 B/op         10 allocs/op
BenchmarkFieldMapDiveSuccess-16                                          2834575               421.2 ns/op           288 B/op         14 allocs/op
BenchmarkFieldMapDiveSuccessParallel-16                                  7179700               171.8 ns/op           288 B/op         14 allocs/op
BenchmarkFieldMapDiveFailure-16                                          3081728               384.4 ns/op           376 B/op         13 allocs/op
BenchmarkFieldMapDiveFailureParallel-16                                  6058137               204.0 ns/op           377 B/op         13 allocs/op
BenchmarkFieldMapDiveWithKeysSuccess-16                                  2544975               464.8 ns/op           288 B/op         14 allocs/op
BenchmarkFieldMapDiveWithKeysSuccessParallel-16                          6661954               181.4 ns/op           288 B/op         14 allocs/op
BenchmarkFieldMapDiveWithKeysFailure-16                                  2435484               490.7 ns/op           553 B/op         16 allocs/op
BenchmarkFieldMapDiveWithKeysFailureParallel-16                          4249617               282.0 ns/op           554 B/op         16 allocs/op
BenchmarkFieldCustomTypeSuccess-16                                      14943525                77.35 ns/op           32 B/op          2 allocs/op
BenchmarkFieldCustomTypeSuccessParallel-16                              64051954                20.61 ns/op           32 B/op          2 allocs/op
BenchmarkFieldCustomTypeFailure-16                                      10721384               107.1 ns/op           184 B/op          3 allocs/op
BenchmarkFieldCustomTypeFailureParallel-16                              18714495                69.77 ns/op          184 B/op          3 allocs/op
BenchmarkFieldOrTagSuccess-16                                            4063124               294.3 ns/op            16 B/op          1 allocs/op
BenchmarkFieldOrTagSuccessParallel-16                                   31903756                41.22 ns/op           18 B/op          1 allocs/op
BenchmarkFieldOrTagFailure-16                                            7748558               146.8 ns/op           216 B/op          5 allocs/op
BenchmarkFieldOrTagFailureParallel-16                                   13139854                92.05 ns/op          216 B/op          5 allocs/op
BenchmarkStructLevelValidationSuccess-16                                16808389                70.25 ns/op           16 B/op          1 allocs/op
BenchmarkStructLevelValidationSuccessParallel-16                        90686955                14.47 ns/op           16 B/op          1 allocs/op
BenchmarkStructLevelValidationFailure-16                                 5818791               200.2 ns/op           264 B/op          7 allocs/op
BenchmarkStructLevelValidationFailureParallel-16                        11115874               107.5 ns/op           264 B/op          7 allocs/op
BenchmarkStructSimpleCustomTypeSuccess-16                                7764956               151.9 ns/op            32 B/op          2 allocs/op
BenchmarkStructSimpleCustomTypeSuccessParallel-16                       52316265                30.37 ns/op           32 B/op          2 allocs/op
BenchmarkStructSimpleCustomTypeFailure-16                                4195429               277.2 ns/op           416 B/op          9 allocs/op
BenchmarkStructSimpleCustomTypeFailureParallel-16                        7305661               164.6 ns/op           432 B/op         10 allocs/op
BenchmarkStructFilteredSuccess-16                                        6312625               186.1 ns/op           216 B/op          5 allocs/op
BenchmarkStructFilteredSuccessParallel-16                               13684459                93.42 ns/op          216 B/op          5 allocs/op
BenchmarkStructFilteredFailure-16                                        6751482               171.2 ns/op           216 B/op          5 allocs/op
BenchmarkStructFilteredFailureParallel-16                               14146070                86.93 ns/op          216 B/op          5 allocs/op
BenchmarkStructPartialSuccess-16                                         6544448               177.3 ns/op           224 B/op          4 allocs/op
BenchmarkStructPartialSuccessParallel-16                                13951946                88.73 ns/op          224 B/op          4 allocs/op
BenchmarkStructPartialFailure-16                                         4075833               287.5 ns/op           440 B/op          9 allocs/op
BenchmarkStructPartialFailureParallel-16                                 7490805               161.3 ns/op           440 B/op          9 allocs/op
BenchmarkStructExceptSuccess-16                                          4107187               281.4 ns/op           424 B/op          8 allocs/op
BenchmarkStructExceptSuccessParallel-16                                 15979173                80.86 ns/op          208 B/op          3 allocs/op
BenchmarkStructExceptFailure-16                                          4434372               264.3 ns/op           424 B/op          8 allocs/op
BenchmarkStructExceptFailureParallel-16                                  8081367               154.1 ns/op           424 B/op          8 allocs/op
BenchmarkStructSimpleCrossFieldSuccess-16                                6459542               183.4 ns/op            56 B/op          3 allocs/op
BenchmarkStructSimpleCrossFieldSuccessParallel-16                       41013781                37.95 ns/op           56 B/op          3 allocs/op
BenchmarkStructSimpleCrossFieldFailure-16                                4034998               292.1 ns/op           272 B/op          8 allocs/op
BenchmarkStructSimpleCrossFieldFailureParallel-16                       11348446               115.3 ns/op           272 B/op          8 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccess-16                     4448528               267.7 ns/op            64 B/op          4 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-16            26813619                48.33 ns/op           64 B/op          4 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailure-16                     3090646               384.5 ns/op           288 B/op          9 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-16             9870906               129.5 ns/op           288 B/op          9 allocs/op
BenchmarkStructSimpleSuccess-16                                         10675562               109.5 ns/op             0 B/op          0 allocs/op
BenchmarkStructSimpleSuccessParallel-16                                 131159784                8.932 ns/op           0 B/op          0 allocs/op
BenchmarkStructSimpleFailure-16                                          4094979               286.6 ns/op           416 B/op          9 allocs/op
BenchmarkStructSimpleFailureParallel-16                                  7606663               157.9 ns/op           416 B/op          9 allocs/op
BenchmarkStructComplexSuccess-16                                         2073470               576.0 ns/op           224 B/op          5 allocs/op
BenchmarkStructComplexSuccessParallel-16                                 7821831               161.3 ns/op           224 B/op          5 allocs/op
BenchmarkStructComplexFailure-16                                          576358              2001 ns/op            3042 B/op         48 allocs/op
BenchmarkStructComplexFailureParallel-16                                 1000000              1171 ns/op            3041 B/op         48 allocs/op
BenchmarkOneof-16                                                       22503973                52.82 ns/op            0 B/op          0 allocs/op
BenchmarkOneofParallel-16                                                8538474               140.4 ns/op             0 B/op          0 allocs/op
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Complementary Software&lt;/h2&gt; 
&lt;p&gt;Here is a list of software that complements using this library either pre or post validation.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/form&quot;&gt;form&lt;/a&gt; - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-playground/mold&quot;&gt;mold&lt;/a&gt; - A general library to help modify or set data within data structures and other objects&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to Contribute&lt;/h2&gt; 
&lt;p&gt;Make a pull request...&lt;/p&gt; 
&lt;h2&gt;Maintenance and support for SDK major versions&lt;/h2&gt; 
&lt;p&gt;See prior discussion &lt;a href=&quot;https://github.com/go-playground/validator/discussions/1342&quot;&gt;here&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;p&gt;This package is aligned with the &lt;a href=&quot;https://go.dev/doc/devel/release&quot;&gt;Go release policy&lt;/a&gt; in that support is guaranteed for the two most recent major versions.&lt;/p&gt; 
&lt;p&gt;This does not mean the package will not work with older versions of Go, only that we reserve the right to increase the MSGV(Minimum Supported Go Version) when the need arises to address Security issues/patches, OS issues &amp;amp; support or newly introduced functionality that would greatly benefit the maintenance and/or usage of this package.&lt;/p&gt; 
&lt;p&gt;If and when the MSGV is increased it will be done so in a minimum of a &lt;code&gt;Minor&lt;/code&gt; release bump.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Distributed under MIT License, please see license file within the code for more details.&lt;/p&gt; 
&lt;h2&gt;Maintainers&lt;/h2&gt; 
&lt;p&gt;This project has grown large enough that more than one person is required to properly support the community. If you are interested in becoming a maintainer please reach out to me &lt;a href=&quot;https://github.com/deankarn&quot;&gt;https://github.com/deankarn&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/e5b5a9a581df4f2ed20490fc3ffca52b6c3a792597028de7b4f4f68509e00321/go-playground/validator" medium="image" />
      
    </item>
    
    <item>
      <title>kubescape/kubescape</title>
      <link>https://github.com/kubescape/kubescape</link>
      <description>&lt;p&gt;Kubescape is an open-source Kubernetes security platform for your IDE, CI/CD pipelines, and clusters. It includes risk analysis, security, compliance, and misconfiguration scanning, saving Kubernetes users and administrators precious time, effort, and resources.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/kubescape/kubescape/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/kubescape/kubescape&quot; alt=&quot;Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kubescape/kubescape/actions/workflows/02-release.yaml&quot;&gt;&lt;img src=&quot;https://github.com/kubescape/kubescape/actions/workflows/02-release.yaml/badge.svg?sanitize=true&quot; alt=&quot;build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/kubescape/kubescape&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/kubescape/kubescape&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitpod.io/#https://github.com/kubescape/kubescape&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod&quot; alt=&quot;Gitpod Ready-to-Code&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kubescape/kubescape/raw/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/kubescape/kubescape&quot; alt=&quot;GitHub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://landscape.cncf.io/?item=provisioning--security-compliance--kubescape&quot;&gt;&lt;img src=&quot;https://shields.io/badge/CNCF-Incubating%20project-blue?logo=linux-foundation&amp;amp;style=flat&quot; alt=&quot;CNCF&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://artifacthub.io/packages/search?repo=kubescape&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/kubescape&quot; alt=&quot;Artifact HUB&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://app.fossa.com/projects/git%2Bgithub.com%2Fkubescape%2Fkubescape?ref=badge_shield&amp;amp;issueType=license&quot;&gt;&lt;img src=&quot;https://app.fossa.com/api/projects/git%2Bgithub.com%2Fkubescape%2Fkubescape.svg?type=shield&amp;amp;issueType=license&quot; alt=&quot;FOSSA Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.bestpractices.dev/projects/6944&quot;&gt;&lt;img src=&quot;https://www.bestpractices.dev/projects/6944/badge&quot; alt=&quot;OpenSSF Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://securityscorecards.dev/viewer/?uri=github.com/kubescape/kubescape&quot;&gt;&lt;img src=&quot;https://api.securityscorecards.dev/projects/github.com/kubescape/kubescape/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://kubescape.io/docs/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-latest-brightgreen?logo=gitbook&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kubescape/kubescape/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/kubescape/kubescape?style=social&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://twitter.com/kubescape&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/kubescape?style=social&quot; alt=&quot;Twitter Follow&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://cloud-native.slack.com/archives/C04EY3ZF9GE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/slack-kubescape-blueviolet?logo=slack&quot; alt=&quot;Slack&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;Kubescape&lt;/h1&gt; 
&lt;picture&gt; 
 &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://raw.githubusercontent.com/cncf/artwork/master/projects/kubescape/stacked/white/kubescape-stacked-white.svg&quot; width=&quot;150&quot; /&gt; 
 &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://raw.githubusercontent.com/cncf/artwork/master/projects/kubescape/stacked/color/kubescape-stacked-color.svg&quot; width=&quot;150&quot; /&gt; 
 &lt;img alt=&quot;Kubescape logo&quot; align=&quot;right&quot; src=&quot;https://raw.githubusercontent.com/cncf/artwork/master/projects/kubescape/stacked/color/kubescape-stacked-color.svg?sanitize=true&quot; width=&quot;150&quot; /&gt; 
&lt;/picture&gt; 
&lt;p&gt;&lt;em&gt;Comprehensive Kubernetes Security from Development to Runtime&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Kubescape is an open-source Kubernetes security platform that provides comprehensive security coverage, from left to right across the entire development and deployment lifecycle. It offers hardening, posture management, and runtime security capabilities to ensure robust protection for Kubernetes environments.&lt;/p&gt; 
&lt;p&gt;Kubescape was created by &lt;a href=&quot;https://www.armosec.io/?utm_source=github&amp;amp;utm_medium=repository&quot;&gt;ARMO&lt;/a&gt; and is a &lt;a href=&quot;https://www.cncf.io/projects/&quot;&gt;Cloud Native Computing Foundation (CNCF) incubating project&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Please &lt;a href=&quot;https://github.com/kubescape/kubescape/stargazers&quot;&gt;star ⭐&lt;/a&gt; the repo if you want us to continue developing and improving Kubescape!&lt;/em&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📑 Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-demo&quot;&gt;Demo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-quick-start&quot;&gt;Quick Start&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#%EF%B8%8F-cli-commands&quot;&gt;CLI Commands&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-usage-examples&quot;&gt;Usage Examples&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#%EF%B8%8F-architecture&quot;&gt;Architecture&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#%EF%B8%8F-in-cluster-operator&quot;&gt;In-Cluster Operator&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-integrations&quot;&gt;Integrations&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#changelog&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ Features&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔍 &lt;strong&gt;Misconfiguration Scanning&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Scan clusters, YAML files, and Helm charts against NSA-CISA, MITRE ATT&amp;amp;CK®, and CIS Benchmarks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🐳 &lt;strong&gt;Image Vulnerability Scanning&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Detect CVEs in container images using &lt;a href=&quot;https://github.com/anchore/grype&quot;&gt;Grype&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🩹 &lt;strong&gt;Image Patching&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Automatically patch vulnerable images using &lt;a href=&quot;https://github.com/project-copacetic/copacetic&quot;&gt;Copacetic&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🔧 &lt;strong&gt;Auto-Remediation&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Automatically fix misconfigurations in Kubernetes manifests&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🛡️ &lt;strong&gt;Admission Control&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Enforce security policies with Validating Admission Policies (VAP)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📊 &lt;strong&gt;Runtime Security&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;eBPF-based runtime monitoring via &lt;a href=&quot;https://github.com/inspektor-gadget&quot;&gt;Inspektor Gadget&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;🤖 &lt;strong&gt;AI Integration&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;MCP server for AI assistant integration&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🎬 Demo&lt;/h2&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/docs/img/demo-v3.gif&quot; alt=&quot;Kubescape CLI demo&quot; /&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Quick Start&lt;/h2&gt; 
&lt;h3&gt;1. Install Kubescape&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 See &lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#-installation&quot;&gt;Installation&lt;/a&gt; for more options (Homebrew, Krew, Windows, etc.)&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;2. Run Your First Scan&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# Scan your current cluster
kubescape scan

# Scan a specific YAML file or directory
kubescape scan /path/to/manifests/

# Scan a container image for vulnerabilities
kubescape scan image nginx:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3. Explore the Results&lt;/h3&gt; 
&lt;p&gt;Kubescape provides a detailed security posture overview including:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Control plane security status&lt;/li&gt; 
 &lt;li&gt;Access control risks&lt;/li&gt; 
 &lt;li&gt;Workload misconfigurations&lt;/li&gt; 
 &lt;li&gt;Network policy gaps&lt;/li&gt; 
 &lt;li&gt;Compliance scores (MITRE, NSA)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📦 Installation&lt;/h2&gt; 
&lt;h3&gt;One-Line Install (Linux/macOS)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Package Managers&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&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;strong&gt;Homebrew&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;brew install kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Krew&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;kubectl krew install kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Arch Linux&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;yay -S kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Ubuntu&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;sudo add-apt-repository ppa:kubescape/kubescape &amp;amp;&amp;amp; sudo apt install kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;NixOS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;nix-shell -p kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Chocolatey&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;choco install kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Scoop&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;scoop install kubescape&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Windows (PowerShell)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;iwr -useb https://raw.githubusercontent.com/kubescape/kubescape/master/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;📖 &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/docs/installation.md&quot;&gt;Full Installation Guide →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🛠️ CLI Commands&lt;/h2&gt; 
&lt;p&gt;Kubescape provides a comprehensive CLI with the following commands:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&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/kubescape/kubescape/master/#scanning&quot;&gt;&lt;code&gt;kubescape scan&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Scan cluster, files, or images for security issues&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#image-scanning&quot;&gt;&lt;code&gt;kubescape scan image&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Scan container images for vulnerabilities&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#auto-fix&quot;&gt;&lt;code&gt;kubescape fix&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-fix misconfigurations in manifest files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#image-patching&quot;&gt;&lt;code&gt;kubescape patch&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Patch container images to fix vulnerabilities&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#list-frameworks-and-controls&quot;&gt;&lt;code&gt;kubescape list&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;List available frameworks and controls&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#offline-support&quot;&gt;&lt;code&gt;kubescape download&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Download artifacts for offline/air-gapped use&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#configuration&quot;&gt;&lt;code&gt;kubescape config&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Manage cached configurations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#operator-commands&quot;&gt;&lt;code&gt;kubescape operator&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Interact with in-cluster Kubescape operator&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#validating-admission-policies&quot;&gt;&lt;code&gt;kubescape vap&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Manage Validating Admission Policies&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/#mcp-server&quot;&gt;&lt;code&gt;kubescape mcpserver&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Start MCP server for AI assistant integration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;kubescape completion&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Generate shell completion scripts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;kubescape version&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Display version information&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📖 Usage Examples&lt;/h2&gt; 
&lt;h3&gt;Scanning&lt;/h3&gt; 
&lt;h4&gt;Scan a Running Cluster&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Default scan (all frameworks)
kubescape scan

# Scan with a specific framework
kubescape scan framework nsa
kubescape scan framework mitre
kubescape scan framework cis-v1.23-t1.0.1

# Scan a specific control
kubescape scan control C-0005 -v
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Scan Files and Repositories&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Scan local YAML files
kubescape scan /path/to/manifests/

# Scan a Helm chart
kubescape scan /path/to/helm/chart/

# Scan a Git repository
kubescape scan https://github.com/kubescape/kubescape

# Scan with Kustomize
kubescape scan /path/to/kustomize/directory/
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Scan Options&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Include/exclude namespaces
kubescape scan --include-namespaces production,staging
kubescape scan --exclude-namespaces kube-system,kube-public

# Use alternative kubeconfig
kubescape scan --kubeconfig /path/to/kubeconfig

# Set compliance threshold (exit code 1 if below threshold)
kubescape scan --compliance-threshold 80

# Set severity threshold
kubescape scan --severity-threshold high
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Output Formats&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# JSON output
kubescape scan --format json --output results.json

# JUnit XML (for CI/CD)
kubescape scan --format junit --output results.xml

# SARIF (for GitHub Code Scanning)
kubescape scan --format sarif --output results.sarif

# HTML report
kubescape scan --format html --output report.html

# PDF report
kubescape scan --format pdf --output report.pdf
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Image Scanning&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Scan a public image
kubescape scan image nginx:1.21

# Scan with verbose output
kubescape scan image nginx:1.21 -v

# Scan a private registry image
kubescape scan image myregistry/myimage:tag --username user --password pass
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Using an Offline Grype Database&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Start the offline Grype-DB server (using docker)
docker run --rm -p8080:8080 quay.io/kubescape/grype-offline-db:v6-latest

# Scan an image using the offline database:
kubescape scan image --grype-db-url http://localhost:8080/databases/ nginx:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Auto-Fix&lt;/h3&gt; 
&lt;p&gt;Automatically fix misconfigurations in your manifest files:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# First, scan and save results to JSON
kubescape scan /path/to/manifests --format json --output results.json

# Then apply fixes
kubescape fix results.json

# Dry run (preview changes without applying)
kubescape fix results.json --dry-run

# Apply fixes without confirmation prompts
kubescape fix results.json --no-confirm
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Image Patching&lt;/h3&gt; 
&lt;p&gt;Patch container images to fix OS-level vulnerabilities:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Start buildkitd (required)
sudo buildkitd &amp;amp;

# Patch an image
sudo kubescape patch --image docker.io/library/nginx:1.22

# Specify custom output tag
sudo kubescape patch --image nginx:1.22 --tag nginx:1.22-patched

# See detailed vulnerability report
sudo kubescape patch --image nginx:1.22 -v
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;📖 &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/cmd/patch/README.md&quot;&gt;Full Patch Command Documentation →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;h3&gt;List Frameworks and Controls&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# List available frameworks
kubescape list frameworks

# List all controls
kubescape list controls

# Output as JSON
kubescape list controls --format json
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Offline Support&lt;/h3&gt; 
&lt;p&gt;Download artifacts for air-gapped environments:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Download all artifacts
kubescape download artifacts --output /path/to/offline/dir

# Download a specific framework
kubescape download framework nsa --output /path/to/nsa.json

# Scan using downloaded artifacts
kubescape scan --use-artifacts-from /path/to/offline/dir
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Configuration&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# View current configuration
kubescape config view

# Set account ID
kubescape config set accountID &amp;lt;your-account-id&amp;gt;

# Delete cached configuration
kubescape config delete
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Operator Commands&lt;/h3&gt; 
&lt;p&gt;Interact with the in-cluster Kubescape operator:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Trigger a configuration scan
kubescape operator scan configurations

# Trigger a vulnerability scan
kubescape operator scan vulnerabilities
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Validating Admission Policies&lt;/h3&gt; 
&lt;p&gt;Manage Kubernetes Validating Admission Policies:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Deploy the Kubescape CEL admission policy library
kubescape vap deploy-library | kubectl apply -f -

# Create a policy binding
kubescape vap create-policy-binding \
  --name my-policy-binding \
  --policy c-0016 \
  --namespace my-namespace | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;MCP Server&lt;/h3&gt; 
&lt;p&gt;Start an MCP (Model Context Protocol) server for AI assistant integration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubescape mcpserver
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The MCP server exposes Kubescape&#39;s vulnerability and configuration scan data to AI assistants, enabling natural language queries about your cluster&#39;s security posture.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Available MCP Tools:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;list_vulnerability_manifests&lt;/code&gt; - Discover vulnerability manifests&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;list_vulnerabilities_in_manifest&lt;/code&gt; - List CVEs in a manifest&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;list_vulnerability_matches_for_cve&lt;/code&gt; - Get details for a specific CVE&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;list_configuration_security_scan_manifests&lt;/code&gt; - List configuration scan results&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;get_configuration_security_scan_manifest&lt;/code&gt; - Get configuration scan details&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🏗️ Architecture&lt;/h2&gt; 
&lt;p&gt;Kubescape can run in two modes:&lt;/p&gt; 
&lt;h3&gt;CLI Mode&lt;/h3&gt; 
&lt;p&gt;The CLI is a standalone tool that scans clusters, files, and images on-demand.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/docs/img/ks-cli-arch.png&quot; width=&quot;600&quot; alt=&quot;CLI Architecture&quot; /&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;strong&gt;Key Components:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/open-policy-agent/opa&quot;&gt;Open Policy Agent (OPA)&lt;/a&gt;&lt;/strong&gt; - Policy evaluation engine&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/regolibrary&quot;&gt;Regolibrary&lt;/a&gt;&lt;/strong&gt; - Library of security controls&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/anchore/grype&quot;&gt;Grype&lt;/a&gt;&lt;/strong&gt; - Image vulnerability scanning&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/project-copacetic/copacetic&quot;&gt;Copacetic&lt;/a&gt;&lt;/strong&gt; - Image patching&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Operator Mode (In-Cluster)&lt;/h3&gt; 
&lt;p&gt;For continuous monitoring, deploy the Kubescape operator via Helm.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/docs/img/ks-operator-arch.png&quot; width=&quot;600&quot; alt=&quot;Operator Architecture&quot; /&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;strong&gt;Additional Capabilities:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Continuous configuration scanning&lt;/li&gt; 
 &lt;li&gt;Image vulnerability scanning&lt;/li&gt; 
 &lt;li&gt;Runtime analysis with eBPF&lt;/li&gt; 
 &lt;li&gt;Network policy generation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;📖 &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/docs/architecture.md&quot;&gt;Full Architecture Documentation →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;☸️ In-Cluster Operator&lt;/h2&gt; 
&lt;p&gt;The Kubescape operator provides continuous security monitoring in your cluster:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Add the Kubescape Helm repository
helm repo add kubescape https://kubescape.github.io/helm-charts/

# Install the operator
helm upgrade --install kubescape kubescape/kubescape-operator \
  --namespace kubescape \
  --create-namespace
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Operator Features:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🔄 Continuous misconfiguration scanning&lt;/li&gt; 
 &lt;li&gt;🐳 Image vulnerability scanning for all workloads&lt;/li&gt; 
 &lt;li&gt;🔍 Runtime threat detection (eBPF-based)&lt;/li&gt; 
 &lt;li&gt;🌐 Network policy generation&lt;/li&gt; 
 &lt;li&gt;📈 Prometheus metrics integration&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;📖 &lt;strong&gt;&lt;a href=&quot;https://kubescape.io/docs/operator/&quot;&gt;Operator Installation Guide →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🔌 Integrations&lt;/h2&gt; 
&lt;h3&gt;CI/CD&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&lt;/th&gt; 
   &lt;th&gt;Integration&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/marketplace/actions/kubescape&quot;&gt;kubescape/github-action&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GitLab CI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://kubescape.io/docs/integrations/gitlab/&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Jenkins&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://kubescape.io/docs/integrations/jenkins/&quot;&gt;Documentation&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;IDE Extensions&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;IDE&lt;/th&gt; 
   &lt;th&gt;Extension&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;VS Code&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=kubescape.kubescape&quot;&gt;Kubescape Extension&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Lens&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/armosec/lens-kubescape&quot;&gt;Kubescape Lens Extension&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Where You Can Use Kubescape&lt;/h3&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/docs/img/ksfromcodetodeploy.png&quot; alt=&quot;Kubescape integration points: IDE, CI, CD, Runtime&quot; /&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;👥 Community&lt;/h2&gt; 
&lt;p&gt;Kubescape is a CNCF incubating project with an active community.&lt;/p&gt; 
&lt;h3&gt;Get Involved&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;💬 &lt;strong&gt;&lt;a href=&quot;https://cloud-native.slack.com/archives/C04EY3ZF9GE&quot;&gt;Slack - Users Channel&lt;/a&gt;&lt;/strong&gt; - Ask questions, get help&lt;/li&gt; 
 &lt;li&gt;💬 &lt;strong&gt;&lt;a href=&quot;https://cloud-native.slack.com/archives/C04GY6H082K&quot;&gt;Slack - Developers Channel&lt;/a&gt;&lt;/strong&gt; - Contribute to development&lt;/li&gt; 
 &lt;li&gt;🐛 &lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/kubescape/issues&quot;&gt;GitHub Issues&lt;/a&gt;&lt;/strong&gt; - Report bugs and request features&lt;/li&gt; 
 &lt;li&gt;📋 &lt;strong&gt;&lt;a href=&quot;https://github.com/orgs/kubescape/projects/4&quot;&gt;Project Board&lt;/a&gt;&lt;/strong&gt; - See what we&#39;re working on&lt;/li&gt; 
 &lt;li&gt;🗺️ &lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/project-governance/raw/main/ROADMAP.md&quot;&gt;Roadmap&lt;/a&gt;&lt;/strong&gt; - Future plans&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Contributing&lt;/h3&gt; 
&lt;p&gt;We welcome contributions! Please see our:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/project-governance/raw/main/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/cncf/foundation/raw/master/code-of-conduct.md&quot;&gt;Code of Conduct&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Community Resources&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/project-governance/raw/main/COMMUNITY.md&quot;&gt;Community Info&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/project-governance/raw/main/GOVERNANCE.md&quot;&gt;Governance&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/project-governance/raw/main/SECURITY.md&quot;&gt;Security Policy&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kubescape/project-governance/raw/main/MAINTAINERS.md&quot;&gt;Maintainers&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Contributors&lt;/h3&gt; 
&lt;a href=&quot;https://github.com/kubescape/kubescape/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=kubescape/kubescape&quot; /&gt; &lt;/a&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Changelog&lt;/h2&gt; 
&lt;p&gt;Kubescape changes are tracked on the &lt;a href=&quot;https://github.com/kubescape/kubescape/releases&quot;&gt;releases page&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Copyright 2021-2025, the Kubescape Authors. All rights reserved.&lt;/p&gt; 
&lt;p&gt;Kubescape is released under the &lt;a href=&quot;https://raw.githubusercontent.com/kubescape/kubescape/master/LICENSE&quot;&gt;Apache 2.0 license&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Kubescape is a &lt;a href=&quot;https://www.cncf.io/projects/kubescape/&quot;&gt;Cloud Native Computing Foundation (CNCF) incubating project&lt;/a&gt; and was contributed by &lt;a href=&quot;https://www.armosec.io/?utm_source=github&amp;amp;utm_medium=repository&quot;&gt;ARMO&lt;/a&gt;.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/cncf/artwork/refs/heads/main/other/cncf-member/incubating/color/cncf-incubating-color.svg?sanitize=true&quot; width=&quot;300&quot; alt=&quot;CNCF Incubating Project&quot; /&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/395283401/8b597a65-306c-496e-bc3e-9a7c1e21620f" medium="image" />
      
    </item>
    
    <item>
      <title>bytebase/bytebase</title>
      <link>https://github.com/bytebase/bytebase</link>
      <description>&lt;p&gt;World&#39;s most advanced database DevSecOps solution for Developer, Security, DBA and Platform Engineering teams. The GitHub/GitLab for database DevSecOps.&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.bytebase.com?source=github&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;Bytebase&quot; src=&quot;https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/banner.webp&quot; /&gt; &lt;/a&gt; &lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;b&gt;Database CI/CD for DevOps teams&lt;/b&gt;&lt;br /&gt; Manage database schema changes with confidence &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://docs.bytebase.com/get-started/self-host-vs-cloud&quot; target=&quot;_blank&quot;&gt;⚙️ Install&lt;/a&gt; • &lt;a href=&quot;https://docs.bytebase.com&quot;&gt;📚 Docs&lt;/a&gt; • &lt;a href=&quot;https://demo.bytebase.com&quot;&gt;🎮 Demo&lt;/a&gt; • &lt;a href=&quot;https://discord.gg/huyw7gRsyA&quot;&gt;💬 Discord&lt;/a&gt; • &lt;a href=&quot;https://www.bytebase.com/request-demo/&quot;&gt;🙋‍♀️ Book Demo&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/bytebase/bytebase&quot;&gt; &lt;img alt=&quot;go report&quot; src=&quot;https://goreportcard.com/badge/github.com/bytebase/bytebase&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://artifacthub.io/packages/search?repo=bytebase&quot;&gt; &lt;img alt=&quot;Artifact Hub&quot; src=&quot;https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/bytebase&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/bytebase/bytebase&quot;&gt; &lt;img alt=&quot;Github Stars&quot; src=&quot;https://img.shields.io/github/stars/bytebase/bytebase?logo=github&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;What is Bytebase?&lt;/h2&gt; 
&lt;p&gt;Bytebase is an open-source database DevOps tool, it&#39;s the &lt;strong&gt;only database CI/CD project&lt;/strong&gt; included by the &lt;a href=&quot;https://landscape.cncf.io/?selected=bytebase&amp;amp;item=app-definition-and-development--continuous-integration-delivery--bytebase&quot;&gt;CNCF Landscape&lt;/a&gt; and &lt;a href=&quot;https://platformengineering.org/tools/bytebase&quot;&gt;Platform Engineering&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;It offers a web-based collaboration workspace to help DBAs and Developers manage the lifecycle of application database schemas.&lt;/p&gt; 
&lt;h1 align=&quot;center&quot;&gt; &lt;img alt=&quot;Bytebase&quot; src=&quot;https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/fish.webp&quot; /&gt; &lt;/h1&gt; 
&lt;h2&gt;Key Features&lt;/h2&gt; 
&lt;h3&gt;🔄 &lt;strong&gt;Database CI/CD&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;GitOps Integration&lt;/strong&gt;: Native GitHub/GitLab integration for database-as-code workflows&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Migration Management&lt;/strong&gt;: Automated schema migration with rollback support&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SQL Review&lt;/strong&gt;: 200+ lint rules to enforce SQL standards and best practices&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🔒 &lt;strong&gt;Security &amp;amp; Compliance&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Data Masking&lt;/strong&gt;: Advanced column-level masking for sensitive data protection&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Access Control&lt;/strong&gt;: Fine-grained RBAC with project and workspace-level permissions&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Audit Logging&lt;/strong&gt;: Complete audit trail of all database activities&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🎯 &lt;strong&gt;Developer Experience&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Web SQL Editor&lt;/strong&gt;: Feature-rich IDE for database development&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Batch Changes&lt;/strong&gt;: Apply changes across multiple databases and tenants&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;API &amp;amp; Terraform&lt;/strong&gt;: Full API access and Terraform provider for automation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;📊 &lt;strong&gt;Operations&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-Database Support&lt;/strong&gt;: PostgreSQL, MySQL, MongoDB, Redis, Snowflake, and more&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Drift Detection&lt;/strong&gt;: Automatic detection of schema drift across environments&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Admin Mode&lt;/strong&gt;: CLI-like experience without bastion setup&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;h3&gt;Docker&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --init \
  --name bytebase \
  --publish 8080:8080 \
  --volume ~/.bytebase/data:/var/opt/bytebase \
  bytebase/bytebase:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Kubernetes&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm install bytebase bytebase/bytebase
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Visit &lt;a href=&quot;http://localhost:8080&quot;&gt;http://localhost:8080&lt;/a&gt; and follow the setup wizard.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.bytebase.com/get-started/self-host-vs-cloud&quot;&gt;Installation Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.bytebase.com/tutorials&quot;&gt;Tutorials&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.bytebase.com/api/overview&quot;&gt;API Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.bytebase.com/faq&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;The Bytebase Family&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.bytebase.com&quot;&gt;Bytebase Console&lt;/a&gt;&lt;/strong&gt;: Web-based GUI for database lifecycle management&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bytebase/sql-review-action&quot;&gt;SQL Review Action&lt;/a&gt;&lt;/strong&gt;: GitHub Action for PR-time SQL review&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://registry.terraform.io/providers/bytebase/bytebase/latest/docs&quot;&gt;Terraform Provider&lt;/a&gt;&lt;/strong&gt;: Infrastructure as code for Bytebase resources&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Use Cases&lt;/h2&gt; 
&lt;h3&gt;For Development Teams&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Implement database schema version control&lt;/li&gt; 
 &lt;li&gt;Automate database deployments through CI/CD pipelines&lt;/li&gt; 
 &lt;li&gt;Collaborate on database changes with review workflows&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;For DBAs&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Centralize database management across all environments&lt;/li&gt; 
 &lt;li&gt;Enforce organization-wide SQL standards and policies&lt;/li&gt; 
 &lt;li&gt;Monitor and audit all database activities&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;For Security Teams&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Control data access with column-level permissions&lt;/li&gt; 
 &lt;li&gt;Implement data masking for sensitive information&lt;/li&gt; 
 &lt;li&gt;Maintain compliance with audit trails&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported Databases&lt;/h2&gt; 
&lt;p&gt;PostgreSQL, MySQL, MariaDB, TiDB, Snowflake, ClickHouse, MongoDB, Redis, Oracle, SQL Server, Spanner, and &lt;a href=&quot;https://docs.bytebase.com/introduction/supported-databases&quot;&gt;more&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Community &amp;amp; Support&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;💬 &lt;a href=&quot;https://discord.gg/huyw7gRsyA&quot;&gt;Discord Community&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;🐦 &lt;a href=&quot;https://twitter.com/Bytebase&quot;&gt;Twitter&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;📧 &lt;a href=&quot;mailto:support@bytebase.com&quot;&gt;Email Support&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;🐛 &lt;a href=&quot;https://github.com/bytebase/bytebase/issues&quot;&gt;Issue Tracker&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome contributions!&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Setup a postgres database with user bbdev and database bbdev
export PG_URL=postgresql://bbdev@localhost/bbdev

# Start backend
alias r=&#39;go build -ldflags &quot;-w -s&quot; -p=16 -o ./bytebase-build/bytebase ./backend/bin/server/main.go &amp;amp;&amp;amp; ./bytebase-build/bytebase --port 8080 --data . --debug&#39;

# Start frontend
alias y=&quot;pnpm --dir frontend i &amp;amp;&amp;amp; pnpm --dir frontend dev&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Comparisons&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/bytebase-vs-liquibase/&quot;&gt;Bytebase vs Liquibase&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/bytebase-vs-flyway/&quot;&gt;Bytebase vs Flyway&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/use-jira-for-database-change/&quot;&gt;Bytebase vs Jira&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/bytebase-vs-dbeaver/&quot;&gt;Bytebase vs DBeaver&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/bytebase-vs-datagrip/&quot;&gt;Bytebase vs DataGrip&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/bytebase-vs-navicat/&quot;&gt;Bytebase vs Navicat&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.bytebase.com/blog/bytebase-vs-cloudbeaver/&quot;&gt;Bytebase vs CloudBeaver&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;a href=&quot;https://www.star-history.com/?repos=bytebase%2Fbytebase%2Cliquibase%2Fliquibase%2Cflyway%2Fflyway%2Cdbeaver%2Fcloudbeaver&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=bytebase/bytebase%2Cliquibase/liquibase%2Cflyway/flyway%2Cdbeaver/cloudbeaver&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=bytebase/bytebase%2Cliquibase/liquibase%2Cflyway/flyway%2Cdbeaver/cloudbeaver&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=bytebase/bytebase%2Cliquibase/liquibase%2Cflyway/flyway%2Cdbeaver/cloudbeaver&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/333303663/42b00317-daff-4771-91e6-8ae248ca990a" medium="image" />
      
    </item>
    
    <item>
      <title>etcd-io/etcd</title>
      <link>https://github.com/etcd-io/etcd</link>
      <description>&lt;p&gt;Distributed reliable key-value store for the most critical data of a distributed system&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;etcd&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://goreportcard.com/report/github.com/etcd-io/etcd&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/etcd-io/etcd?style=flat-square&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://app.codecov.io/gh/etcd-io/etcd/tree/main&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/etcd-io/etcd/branch/main/graph/badge.svg?sanitize=true&quot; alt=&quot;Coverage&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/etcd-io/etcd/actions/workflows/tests.yaml&quot;&gt;&lt;img src=&quot;https://github.com/etcd-io/etcd/actions/workflows/tests.yaml/badge.svg?sanitize=true&quot; alt=&quot;Tests&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/etcd-io/etcd/actions/workflows/codeql-analysis.yml&quot;&gt;&lt;img src=&quot;https://github.com/etcd-io/etcd/actions/workflows/codeql-analysis.yml/badge.svg?sanitize=true&quot; alt=&quot;codeql-analysis&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://etcd.io/docs&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-latest-green.svg?sanitize=true&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/v3&quot;&gt;&lt;img src=&quot;http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square&quot; alt=&quot;Godoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/etcd-io/etcd/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/etcd-io/etcd/all.svg?style=flat-square&quot; alt=&quot;Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/etcd-io/etcd/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/etcd-io/etcd.svg?style=flat-square&quot; alt=&quot;LICENSE&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/etcd-io/etcd&quot;&gt;&lt;img src=&quot;https://api.securityscorecards.dev/projects/github.com/etcd-io/etcd/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The &lt;code&gt;main&lt;/code&gt; branch may be in an &lt;em&gt;unstable or even broken state&lt;/em&gt; during development. For stable versions, see &lt;a href=&quot;https://github.com/etcd-io/etcd/releases&quot;&gt;releases&lt;/a&gt;.&lt;/p&gt; 
&lt;picture&gt; 
 &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://raw.githubusercontent.com/cncf/artwork/9870640f123303a355611065195c43ac3f27aa19/projects/etcd/horizontal/white/etcd-horizontal-white.png&quot; /&gt; 
 &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;logos/etcd-horizontal-color.svg&quot; /&gt; 
 &lt;img alt=&quot;etcd logo&quot; src=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/logos/etcd-horizontal-color.svg?sanitize=true&quot; width=&quot;269&quot; /&gt; 
&lt;/picture&gt; 
&lt;p&gt;etcd is a distributed reliable key-value store for the most critical data of a distributed system, with a focus on being:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;em&gt;Simple&lt;/em&gt;: well-defined, user-facing API (gRPC)&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Secure&lt;/em&gt;: automatic TLS with optional client cert authentication&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Fast&lt;/em&gt;: benchmarked 10,000 writes/sec&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Reliable&lt;/em&gt;: properly distributed using Raft&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;etcd is written in Go and uses the &lt;a href=&quot;https://raft.github.io/&quot;&gt;Raft&lt;/a&gt; consensus algorithm to manage a highly-available replicated log.&lt;/p&gt; 
&lt;p&gt;etcd is used &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/ADOPTERS.md&quot;&gt;in production by many companies&lt;/a&gt;, and the development team stands behind it in critical deployment scenarios, where etcd is frequently teamed with applications such as &lt;a href=&quot;http://kubernetes.io/&quot;&gt;Kubernetes&lt;/a&gt;, &lt;a href=&quot;https://github.com/coreos/locksmith&quot;&gt;locksmith&lt;/a&gt;, &lt;a href=&quot;https://github.com/vulcand/vulcand&quot;&gt;vulcand&lt;/a&gt;, &lt;a href=&quot;https://github.com/youtube/doorman&quot;&gt;Doorman&lt;/a&gt;, and many others. Reliability is further ensured by rigorous &lt;a href=&quot;https://github.com/etcd-io/etcd/tree/main/tests/robustness&quot;&gt;&lt;strong&gt;robustness testing&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/etcd-io/etcd/tree/main/etcdctl&quot;&gt;etcdctl&lt;/a&gt; for a simple command line client.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/logos/etcd-xkcd-2347.png&quot; alt=&quot;etcd reliability is important&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;sub&gt;Original image credited to &lt;a href=&quot;http://xkcd.com/2347&quot;&gt;xkcd.com/2347&lt;/a&gt;, alterations by Josh Berkus.&lt;/sub&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;The most common API documentation you&#39;ll need can be found here:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/api/v3&quot;&gt;go.etcd.io/etcd/api/v3&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/client/pkg/v3&quot;&gt;go.etcd.io/etcd/client/pkg/v3&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/client/v3&quot;&gt;go.etcd.io/etcd/client/v3&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/etcdctl/v3&quot;&gt;go.etcd.io/etcd/etcdctl/v3&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/pkg/v3&quot;&gt;go.etcd.io/etcd/pkg/v3&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/raft/v3&quot;&gt;go.etcd.io/etcd/raft/v3&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://godocs.io/go.etcd.io/etcd/server/v3&quot;&gt;go.etcd.io/etcd/server/v3&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Maintainers&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/OWNERS&quot;&gt;Maintainers&lt;/a&gt; strive to shape an inclusive open source project culture where users are heard and contributors feel respected and empowered. Maintainers aim to build productive relationships across different companies and disciplines. Read more about &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/Documentation/contributor-guide/community-membership.md#maintainers&quot;&gt;Maintainers role and responsibilities&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Getting started&lt;/h2&gt; 
&lt;h3&gt;Getting etcd&lt;/h3&gt; 
&lt;p&gt;The easiest way to get etcd is to use one of the pre-built release binaries which are available for OSX, Linux, Windows, and Docker on the &lt;a href=&quot;https://github.com/etcd-io/etcd/releases&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For more installation guides, please check out &lt;a href=&quot;http://play.etcd.io&quot;&gt;play.etcd.io&lt;/a&gt; and &lt;a href=&quot;https://etcd.io/docs/latest/op-guide&quot;&gt;operating etcd&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Running etcd&lt;/h3&gt; 
&lt;p&gt;First start a single-member cluster of etcd.&lt;/p&gt; 
&lt;p&gt;If etcd is installed using the &lt;a href=&quot;https://github.com/etcd-io/etcd/releases&quot;&gt;pre-built release binaries&lt;/a&gt;, run it from the installation location as below:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/tmp/etcd-download-test/etcd
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The etcd command can be simply run as such if it is moved to the system path as below:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mv /tmp/etcd-download-test/etcd /usr/local/bin/
etcd
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will bring up etcd listening on port 2379 for client communication and on port 2380 for server-to-server communication.&lt;/p&gt; 
&lt;p&gt;Next, let&#39;s set a single key, and then retrieve it:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;etcdctl put mykey &quot;this is awesome&quot;
etcdctl get mykey
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;etcd is now running and serving client requests. For more, please check out:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;http://play.etcd.io&quot;&gt;Interactive etcd playground&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://etcd.io/docs/latest/demo&quot;&gt;Animated quick demo&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;etcd TCP ports&lt;/h3&gt; 
&lt;p&gt;The &lt;a href=&quot;http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt&quot;&gt;official etcd ports&lt;/a&gt; are 2379 for client requests, and 2380 for peer communication.&lt;/p&gt; 
&lt;h3&gt;Running a local etcd cluster&lt;/h3&gt; 
&lt;p&gt;First install &lt;a href=&quot;https://github.com/mattn/goreman&quot;&gt;goreman&lt;/a&gt;, which manages Procfile-based applications.&lt;/p&gt; 
&lt;p&gt;Our &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/Procfile&quot;&gt;Procfile script&lt;/a&gt; will set up a local example cluster. Start it with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;goreman start
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will bring up 3 etcd members &lt;code&gt;infra1&lt;/code&gt;, &lt;code&gt;infra2&lt;/code&gt; and &lt;code&gt;infra3&lt;/code&gt; and optionally etcd &lt;code&gt;grpc-proxy&lt;/code&gt;, which runs locally and composes a cluster.&lt;/p&gt; 
&lt;p&gt;Every cluster member and proxy accepts key value reads and key value writes.&lt;/p&gt; 
&lt;p&gt;Follow the comments in &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/Procfile&quot;&gt;Procfile script&lt;/a&gt; to add a learner node to the cluster.&lt;/p&gt; 
&lt;h3&gt;Install etcd client v3&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go get go.etcd.io/etcd/client/v3
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Next steps&lt;/h3&gt; 
&lt;p&gt;Now it&#39;s time to dig into the full etcd API and other guides.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Read the full &lt;a href=&quot;https://etcd.io/docs/latest&quot;&gt;documentation&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Review etcd &lt;a href=&quot;https://etcd.io/docs/latest/faq&quot;&gt;frequently asked questions&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Explore the full gRPC &lt;a href=&quot;https://etcd.io/docs/latest/learning/api&quot;&gt;API&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Set up a &lt;a href=&quot;https://etcd.io/docs/latest/op-guide/clustering&quot;&gt;multi-machine cluster&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Learn the &lt;a href=&quot;https://etcd.io/docs/latest/op-guide/configuration&quot;&gt;config format, env variables and flags&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Find &lt;a href=&quot;https://etcd.io/docs/latest/integrations&quot;&gt;language bindings and tools&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Use TLS to &lt;a href=&quot;https://etcd.io/docs/latest/op-guide/security&quot;&gt;secure an etcd cluster&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://etcd.io/docs/latest/tuning&quot;&gt;Tune etcd&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contact&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Email: &lt;a href=&quot;https://groups.google.com/g/etcd-dev&quot;&gt;etcd-dev&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Slack: &lt;a href=&quot;https://kubernetes.slack.com/archives/C3HD8ARJ5&quot;&gt;#sig-etcd&lt;/a&gt; channel on Kubernetes (&lt;a href=&quot;http://slack.kubernetes.io/&quot;&gt;get an invite&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/#community-meetings&quot;&gt;Community meetings&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Community meetings&lt;/h3&gt; 
&lt;p&gt;etcd contributors and maintainers meet every week at &lt;code&gt;11:00&lt;/code&gt; AM (USA Pacific) on Thursday and meetings alternate between community meetings and issue triage meetings. Meeting agendas are recorded in a &lt;a href=&quot;https://docs.google.com/document/d/16XEGyPBisZvmmoIHSZzv__LoyOeluC5a4x353CX0SIM/edit&quot;&gt;shared Google doc&lt;/a&gt; and everyone is welcome to suggest additional topics or other agendas.&lt;/p&gt; 
&lt;p&gt;Issue triage meetings are aimed at getting through our backlog of PRs and Issues. Triage meetings are open to any contributor; you don&#39;t have to be a reviewer or approver to help out! They can also be a good way to get started contributing.&lt;/p&gt; 
&lt;p&gt;The meeting lead role is rotated for each meeting between etcd maintainers or sig-etcd leads and is recorded in a &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1jodHIO7Dk2VWTs1IRnfMFaRktS9IH8XRyifOnPdSY8I/edit&quot;&gt;shared Google sheet&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Meeting recordings are uploaded to the official etcd &lt;a href=&quot;https://www.youtube.com/@etcdio&quot;&gt;YouTube channel&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Get calendar invitations by joining &lt;a href=&quot;https://groups.google.com/g/etcd-dev&quot;&gt;etcd-dev&lt;/a&gt; mailing group.&lt;/p&gt; 
&lt;p&gt;Join the CNCF-funded Zoom channel: &lt;a href=&quot;https://zoom.us/my/cncfetcdproject&quot;&gt;zoom.us/my/cncfetcdproject&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING&lt;/a&gt; for details on setting up your development environment, submitting patches and the contribution workflow.&lt;/p&gt; 
&lt;p&gt;Please refer to &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/Documentation/contributor-guide/community-membership.md#member&quot;&gt;community-membership.md&lt;/a&gt; for information on becoming an etcd project member. We welcome and look forward to your contributions to the project!&lt;/p&gt; 
&lt;p&gt;Please also refer to &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/Documentation/contributor-guide/roadmap.md&quot;&gt;roadmap&lt;/a&gt; to get more details on the priorities for the next few major or minor releases.&lt;/p&gt; 
&lt;h2&gt;Reporting bugs&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/etcd-io/etcd/raw/main/Documentation/contributor-guide/reporting_bugs.md&quot;&gt;reporting bugs&lt;/a&gt; for details about reporting any issues. Before opening an issue please check it is not covered in our &lt;a href=&quot;https://etcd.io/docs/latest/faq&quot;&gt;frequently asked questions&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Reporting a security vulnerability&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/security/README.md&quot;&gt;security disclosure and release process&lt;/a&gt; for details on how to report a security vulnerability and how the etcd team manages it.&lt;/p&gt; 
&lt;h2&gt;Issue and PR management&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/etcd-io/etcd/raw/main/Documentation/contributor-guide/triage_issues.md&quot;&gt;issue triage guidelines&lt;/a&gt; for details on how issues are managed.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/etcd-io/etcd/raw/main/Documentation/contributor-guide/triage_prs.md&quot;&gt;PR management&lt;/a&gt; for guidelines on how pull requests are managed.&lt;/p&gt; 
&lt;h2&gt;etcd Emeritus Maintainers&lt;/h2&gt; 
&lt;p&gt;etcd &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/OWNERS&quot;&gt;emeritus maintainers&lt;/a&gt; dedicated a part of their career to etcd and reviewed code, triaged bugs and pushed the project forward over a substantial period of time. Their contribution is greatly appreciated.&lt;/p&gt; 
&lt;h3&gt;License&lt;/h3&gt; 
&lt;p&gt;etcd is under the Apache 2.0 license. See the &lt;a href=&quot;https://raw.githubusercontent.com/etcd-io/etcd/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for details.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2c6613fc503cdaa0504ee23b2cba38ed12446725c42bc04187621d631df86f60/etcd-io/etcd" medium="image" />
      
    </item>
    
    <item>
      <title>GoogleCloudPlatform/microservices-demo</title>
      <link>https://github.com/GoogleCloudPlatform/microservices-demo</link>
      <description>&lt;p&gt;Sample cloud-first application with 10 microservices showcasing Kubernetes, Istio, and gRPC.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://github.com/GoogleCloudPlatform/microservices-demo/workflows/Continuous%20Integration%20-%20Main/Release/badge.svg?sanitize=true&quot; alt=&quot;Continuous Integration&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Online Boutique&lt;/strong&gt; is a cloud-first microservices demo application. The application is a web-based e-commerce app where users can browse items, add them to the cart, and purchase them.&lt;/p&gt; 
&lt;p&gt;Google uses this application to demonstrate how developers can modernize enterprise applications using Google Cloud products, including: &lt;a href=&quot;https://cloud.google.com/kubernetes-engine&quot;&gt;Google Kubernetes Engine (GKE)&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/service-mesh&quot;&gt;Cloud Service Mesh (CSM)&lt;/a&gt;, &lt;a href=&quot;https://grpc.io/&quot;&gt;gRPC&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/products/operations&quot;&gt;Cloud Operations&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/spanner&quot;&gt;Spanner&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/memorystore&quot;&gt;Memorystore&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/alloydb&quot;&gt;AlloyDB&lt;/a&gt;, and &lt;a href=&quot;https://ai.google.dev/&quot;&gt;Gemini&lt;/a&gt;. This application works on any Kubernetes cluster.&lt;/p&gt; 
&lt;p&gt;If you’re using this demo, please &lt;strong&gt;★Star&lt;/strong&gt; this repository to show your interest!&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note to Googlers:&lt;/strong&gt; Please fill out the form at &lt;a href=&quot;http://go/microservices-demo&quot;&gt;go/microservices-demo&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Architecture&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Online Boutique&lt;/strong&gt; is composed of 11 microservices written in different languages that talk to each other over gRPC.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/img/architecture-diagram.png&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/img/architecture-diagram.png&quot; alt=&quot;Architecture of
microservices&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Find &lt;strong&gt;Protocol Buffers Descriptions&lt;/strong&gt; at the &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/protos&quot;&gt;&lt;code&gt;./protos&lt;/code&gt; directory&lt;/a&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Service&lt;/th&gt; 
   &lt;th&gt;Language&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/GoogleCloudPlatform/microservices-demo/main/src/frontend&quot;&gt;frontend&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Go&lt;/td&gt; 
   &lt;td&gt;Exposes an HTTP server to serve the website. Does not require signup/login and generates session IDs for all users automatically.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/cartservice&quot;&gt;cartservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C#&lt;/td&gt; 
   &lt;td&gt;Stores the items in the user&#39;s shopping cart in Redis and retrieves it.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/productcatalogservice&quot;&gt;productcatalogservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Go&lt;/td&gt; 
   &lt;td&gt;Provides the list of products from a JSON file and ability to search products and get individual products.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/currencyservice&quot;&gt;currencyservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Node.js&lt;/td&gt; 
   &lt;td&gt;Converts one money amount to another currency. Uses real values fetched from European Central Bank. It&#39;s the highest QPS service.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/paymentservice&quot;&gt;paymentservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Node.js&lt;/td&gt; 
   &lt;td&gt;Charges the given credit card info (mock) with the given amount and returns a transaction ID.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/shippingservice&quot;&gt;shippingservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Go&lt;/td&gt; 
   &lt;td&gt;Gives shipping cost estimates based on the shopping cart. Ships items to the given address (mock)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/emailservice&quot;&gt;emailservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Python&lt;/td&gt; 
   &lt;td&gt;Sends users an order confirmation email (mock).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/checkoutservice&quot;&gt;checkoutservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Go&lt;/td&gt; 
   &lt;td&gt;Retrieves user cart, prepares order and orchestrates the payment, shipping and the email notification.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/recommendationservice&quot;&gt;recommendationservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Python&lt;/td&gt; 
   &lt;td&gt;Recommends other products based on what&#39;s given in the cart.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/adservice&quot;&gt;adservice&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Java&lt;/td&gt; 
   &lt;td&gt;Provides text ads based on given context words.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/src/loadgenerator&quot;&gt;loadgenerator&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Python/Locust&lt;/td&gt; 
   &lt;td&gt;Continuously sends requests imitating realistic user shopping flows to the frontend.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Home Page&lt;/th&gt; 
   &lt;th&gt;Checkout Screen&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/GoogleCloudPlatform/microservices-demo/main/docs/img/online-boutique-frontend-1.png&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/img/online-boutique-frontend-1.png&quot; alt=&quot;Screenshot of store homepage&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/img/online-boutique-frontend-2.png&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/img/online-boutique-frontend-2.png&quot; alt=&quot;Screenshot of checkout screen&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Quickstart (GKE)&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Ensure you have the following requirements:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/resource-manager/docs/creating-managing-projects#creating_a_project&quot;&gt;Google Cloud project&lt;/a&gt;.&lt;/li&gt; 
   &lt;li&gt;Shell environment with &lt;code&gt;gcloud&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, and &lt;code&gt;kubectl&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Clone the latest major version.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;git clone --depth 1 --branch v0 https://github.com/GoogleCloudPlatform/microservices-demo.git
cd microservices-demo/
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;The &lt;code&gt;--depth 1&lt;/code&gt; argument skips downloading git history.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Set the Google Cloud project and region and ensure the Google Kubernetes Engine API is enabled.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;export PROJECT_ID=&amp;lt;PROJECT_ID&amp;gt;
export REGION=us-central1
gcloud services enable container.googleapis.com \
  --project=${PROJECT_ID}
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Substitute &lt;code&gt;&amp;lt;PROJECT_ID&amp;gt;&lt;/code&gt; with the ID of your Google Cloud project.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Create a GKE cluster and get the credentials for it.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gcloud container clusters create-auto online-boutique \
  --project=${PROJECT_ID} --region=${REGION}
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Creating the cluster may take a few minutes.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Deploy Online Boutique to the cluster.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;kubectl apply -f ./release/kubernetes-manifests.yaml
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Wait for the pods to be ready.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;After a few minutes, you should see the Pods in a &lt;code&gt;Running&lt;/code&gt; state:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;NAME                                     READY   STATUS    RESTARTS   AGE
adservice-76bdd69666-ckc5j               1/1     Running   0          2m58s
cartservice-66d497c6b7-dp5jr             1/1     Running   0          2m59s
checkoutservice-666c784bd6-4jd22         1/1     Running   0          3m1s
currencyservice-5d5d496984-4jmd7         1/1     Running   0          2m59s
emailservice-667457d9d6-75jcq            1/1     Running   0          3m2s
frontend-6b8d69b9fb-wjqdg                1/1     Running   0          3m1s
loadgenerator-665b5cd444-gwqdq           1/1     Running   0          3m
paymentservice-68596d6dd6-bf6bv          1/1     Running   0          3m
productcatalogservice-557d474574-888kr   1/1     Running   0          3m
recommendationservice-69c56b74d4-7z8r5   1/1     Running   0          3m1s
redis-cart-5f59546cdd-5jnqf              1/1     Running   0          2m58s
shippingservice-6ccc89f8fd-v686r         1/1     Running   0          2m58s
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Access the web frontend in a browser using the frontend&#39;s external IP.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;kubectl get service frontend-external | awk &#39;{print $4}&#39;
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Visit &lt;code&gt;http://EXTERNAL_IP&lt;/code&gt; in a web browser to access your instance of Online Boutique.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Congrats! You&#39;ve deployed the default Online Boutique. To deploy a different variation of Online Boutique (e.g., with Google Cloud Operations tracing, Istio, etc.), see &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/#deploy-online-boutique-variations-with-kustomize&quot;&gt;Deploy Online Boutique variations with Kustomize&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Once you are done with it, delete the GKE cluster.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gcloud container clusters delete online-boutique \
  --project=${PROJECT_ID} --region=${REGION}
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Deleting the cluster may take a few minutes.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Additional deployment options&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Terraform&lt;/strong&gt;: &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/terraform&quot;&gt;See these instructions&lt;/a&gt; to learn how to deploy Online Boutique using &lt;a href=&quot;https://www.terraform.io/intro&quot;&gt;Terraform&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Istio / Cloud Service Mesh&lt;/strong&gt;: &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/kustomize/components/service-mesh-istio/README.md&quot;&gt;See these instructions&lt;/a&gt; to deploy Online Boutique alongside an Istio-backed service mesh.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Non-GKE clusters (Minikube, Kind, etc)&lt;/strong&gt;: See the &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/development-guide.md&quot;&gt;Development guide&lt;/a&gt; to learn how you can deploy Online Boutique on non-GKE clusters.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;AI assistant using Gemini&lt;/strong&gt;: &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/kustomize/components/shopping-assistant/README.md&quot;&gt;See these instructions&lt;/a&gt; to deploy a Gemini-powered AI assistant that suggests products to purchase based on an image.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;And more&lt;/strong&gt;: The &lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/kustomize&quot;&gt;&lt;code&gt;/kustomize&lt;/code&gt; directory&lt;/a&gt; contains instructions for customizing the deployment of Online Boutique with other variations.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/main/docs/development-guide.md&quot;&gt;Development&lt;/a&gt; to learn how to run and develop this app locally.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Demos featuring Online Boutique&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/google-cloud/security-hardening-of-the-onlineboutique-sample-apps-with-docker-hardened-images-dhi-ca1fad348343&quot;&gt;Security hardening of the OnlineBoutique sample apps with the Docker Hardened Images (DHI)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/google-cloud/alpine-distroless-or-scratch-caac35250e0b&quot;&gt;alpine, distroless or scratch?&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/d99101001e69&quot;&gt;Platform Engineering in action: Deploy the Online Boutique sample apps with Score and Humanitec&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/9d64c7009cd&quot;&gt;The new Kubernetes Gateway API with Istio and Anthos Service Mesh (ASM)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/981bd98b53f8&quot;&gt;Use Azure Redis Cache with the Online Boutique sample on AKS&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/c68ba253844a&quot;&gt;Sail Sharp, 8 tips to optimize and secure your .NET containers for Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/google-cloud/a2ea3493ed0&quot;&gt;Deploy multi-region application with Anthos and Google cloud Spanner&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/82f7879a900d&quot;&gt;Use Google Cloud Memorystore (Redis) with the Online Boutique sample on GKE&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/246119e46d53&quot;&gt;Use Helm to simplify the deployment of Online Boutique, with a Service Mesh, GitOps, and more!&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/blog/products/application-modernization/api-management-and-service-mesh-go-together&quot;&gt;How to reduce microservices complexity with Apigee and Anthos Service Mesh&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/b5bd26253a4c&quot;&gt;gRPC health probes with Kubernetes 1.24+&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/p/f7248e077339&quot;&gt;Use Google Cloud Spanner with the Online Boutique sample&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://medium.com/google-cloud/64b71969318d&quot;&gt;Seamlessly encrypt traffic from any apps in your Mesh to Memorystore (redis)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/service-mesh/docs/strengthen-app-security&quot;&gt;Strengthen your app&#39;s security with Cloud Service Mesh and Anthos Config Management&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/architecture/exposing-service-mesh-apps-through-gke-ingress&quot;&gt;From edge to mesh: Exposing service mesh applications through GKE Ingress&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/blog/products/operations/on-the-road-to-sre-with-cloud-operations-sandbox&quot;&gt;Take the first step toward SRE with Cloud Operations Sandbox&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/service-mesh/docs/onlineboutique-install-kpt&quot;&gt;Deploying the Online Boutique sample application on Cloud Service Mesh&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://codelabs.developers.google.com/codelabs/anthos-service-mesh-workshop&quot;&gt;Anthos Service Mesh Workshop: Lab Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://youtu.be/-t2BfT59zJA?t=982&quot;&gt;KubeCon EU 2019 - Reinventing Networking: A Deep Dive into Istio&#39;s Multicluster Gateways - Steve Dake, Independent&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Google Cloud Next&#39;18 SF 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://youtu.be/vJ9OaAqfxo4?t=2416&quot;&gt;Day 1 Keynote&lt;/a&gt; showing GKE On-Prem&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://youtu.be/JQPOPV_VH5w?t=815&quot;&gt;Day 3 Keynote&lt;/a&gt; showing Stackdriver APM (Tracing, Code Search, Profiler, Google Cloud Build)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=wCJrdKdD6UM&amp;amp;feature=youtu.be&amp;amp;t=586&quot;&gt;Introduction to Service Management with Istio&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://youtu.be/nIq2pkNcfEI?t=3071&quot;&gt;Google Cloud Next&#39;18 London – Keynote&lt;/a&gt; showing Stackdriver Incident Response Management&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/go-micro/demo&quot;&gt;Microservices demo showcasing Go Micro&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/488789ecde42c28605ee98488f73bce653bf3f40bcd0111c3f0cfc455d693a06/GoogleCloudPlatform/microservices-demo" medium="image" />
      
    </item>
    
    <item>
      <title>kserve/kserve</title>
      <link>https://github.com/kserve/kserve</link>
      <description>&lt;p&gt;Standardized Distributed Generative and Predictive AI Inference Platform for Scalable, Multi-Framework Deployment on Kubernetes&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;KServe&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://pkg.go.dev/github.com/kserve/kserve&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&amp;amp;logoColor=white&quot; alt=&quot;go.dev reference&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/kserve/kserve&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/kserve/kserve&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/6643&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/6643/badge&quot; alt=&quot;OpenSSF Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kserve/kserve/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release-pre/kserve/kserve.svg?sort=semver&quot; alt=&quot;Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kserve/kserve/raw/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/kserve/kserve.svg?sanitize=true&quot; alt=&quot;LICENSE&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/kserve/community/raw/main/README.md#questions-and-issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&amp;amp;style=social&quot; alt=&quot;Slack Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gurubase.io/g/kserve&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Gurubase-Ask%20KServe%20Guru-006BFF&quot; alt=&quot;Gurubase&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;KServe is a standardized distributed generative and predictive AI inference platform for scalable, multi-framework deployment on Kubernetes.&lt;/p&gt; 
&lt;p&gt;KServe is being &lt;a href=&quot;https://kserve.github.io/website/docs/community/adopters&quot;&gt;used by many organizations&lt;/a&gt; and is a &lt;a href=&quot;https://www.cncf.io/&quot;&gt;Cloud Native Computing Foundation (CNCF)&lt;/a&gt; incubating project.&lt;/p&gt; 
&lt;p&gt;For more details, visit the &lt;a href=&quot;https://kserve.github.io/website/&quot;&gt;KServe website&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/kserve/kserve/master/docs/diagrams/kserve_new.png&quot; alt=&quot;KServe&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Why KServe?&lt;/h3&gt; 
&lt;p&gt;Single platform that unifies Generative and Predictive AI inference on Kubernetes. Simple enough for quick deployments, yet powerful enough to handle enterprise-scale AI workloads with advanced features.&lt;/p&gt; 
&lt;h3&gt;Features&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Generative AI&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🧮 &lt;strong&gt;Optimized Backends&lt;/strong&gt;: Support for vLLM and llm-d for optimized performance for serving LLMs&lt;/li&gt; 
 &lt;li&gt;📌 &lt;strong&gt;Standardization&lt;/strong&gt;: OpenAI-compatible inference protocol for seamless integration with LLMs&lt;/li&gt; 
 &lt;li&gt;🚅 &lt;strong&gt;GPU Acceleration&lt;/strong&gt;: High-performance serving with GPU support and optimized memory management for large models&lt;/li&gt; 
 &lt;li&gt;💾 &lt;strong&gt;Model Caching&lt;/strong&gt;: Intelligent model caching to reduce loading times and improve response latency for frequently used models&lt;/li&gt; 
 &lt;li&gt;🗂️ &lt;strong&gt;KV Cache Offloading&lt;/strong&gt;: Advanced memory management with KV cache offloading to CPU/disk for handling longer sequences efficiently&lt;/li&gt; 
 &lt;li&gt;📈 &lt;strong&gt;Autoscaling&lt;/strong&gt;: Request-based autoscaling capabilities optimized for generative workload patterns&lt;/li&gt; 
 &lt;li&gt;🔧 &lt;strong&gt;Hugging Face Ready&lt;/strong&gt;: Native support for Hugging Face models with streamlined deployment workflows&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Predictive AI&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🧮 &lt;strong&gt;Multi-Framework&lt;/strong&gt;: Support for TensorFlow, PyTorch, scikit-learn, XGBoost, ONNX, and more&lt;/li&gt; 
 &lt;li&gt;🔀 &lt;strong&gt;Intelligent Routing&lt;/strong&gt;: Seamless request routing between predictor, transformer, and explainer components with automatic traffic management&lt;/li&gt; 
 &lt;li&gt;🔄 &lt;strong&gt;Advanced Deployments&lt;/strong&gt;: Canary rollouts, inference pipelines, and ensembles with InferenceGraph&lt;/li&gt; 
 &lt;li&gt;⚡ &lt;strong&gt;Autoscaling&lt;/strong&gt;: Request-based autoscaling with scale-to-zero for predictive workloads&lt;/li&gt; 
 &lt;li&gt;🔍 &lt;strong&gt;Model Explainability&lt;/strong&gt;: Built-in support for model explanations and feature attribution to understand prediction reasoning&lt;/li&gt; 
 &lt;li&gt;📊 &lt;strong&gt;Advanced Monitoring&lt;/strong&gt;: Enables payload logging, outlier detection, adversarial detection, and drift detection&lt;/li&gt; 
 &lt;li&gt;💰 &lt;strong&gt;Cost Efficient&lt;/strong&gt;: Scale-to-zero on expensive resources when not in use, reducing infrastructure costs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Learn More&lt;/h3&gt; 
&lt;p&gt;To learn more about KServe, how to use various supported features, and how to participate in the KServe community, please follow the &lt;a href=&quot;https://kserve.github.io/website&quot;&gt;KServe website documentation&lt;/a&gt;. Additionally, we have compiled a list of &lt;a href=&quot;https://kserve.github.io/website/docs/community/presentations&quot;&gt;presentations and demos&lt;/a&gt; to dive through various details.&lt;/p&gt; 
&lt;h3&gt;🛠️ Installation&lt;/h3&gt; 
&lt;h4&gt;Standalone Installation&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://kserve.github.io/website/docs/admin-guide/overview#raw-kubernetes-deployment&quot;&gt;Standard Kubernetes Installation&lt;/a&gt;&lt;/strong&gt;: Compared to Serverless Installation, this is a more &lt;strong&gt;lightweight&lt;/strong&gt; installation. However, this option does not support canary deployment and request based autoscaling with scale-to-zero.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://kserve.github.io/website/docs/admin-guide/overview#serverless-deployment&quot;&gt;Knative Installation&lt;/a&gt;&lt;/strong&gt;: KServe by default installs Knative for &lt;strong&gt;serverless deployment&lt;/strong&gt; for InferenceService.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://kserve.github.io/website/docs/admin-guide/overview#modelmesh-deployment&quot;&gt;ModelMesh Installation&lt;/a&gt;&lt;/strong&gt;: You can optionally install ModelMesh to enable &lt;strong&gt;high-scale&lt;/strong&gt;, &lt;strong&gt;high-density&lt;/strong&gt; and &lt;strong&gt;frequently-changing model serving&lt;/strong&gt; use cases.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://kserve.github.io/website/docs/getting-started/quickstart-guide&quot;&gt;Quick Installation&lt;/a&gt;&lt;/strong&gt;: Install KServe on your local machine.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Kubeflow Installation&lt;/h4&gt; 
&lt;p&gt;KServe is an important addon component of Kubeflow, please learn more from the &lt;a href=&quot;https://www.kubeflow.org/docs/external-add-ons/kserve/kserve&quot;&gt;Kubeflow KServe documentation&lt;/a&gt;. Check out the following guides for running &lt;a href=&quot;https://awslabs.github.io/kubeflow-manifests/main/docs/component-guides/kserve&quot;&gt;on AWS&lt;/a&gt; or &lt;a href=&quot;https://github.com/kserve/kserve/raw/master/docs/OPENSHIFT_GUIDE.md&quot;&gt;on OpenShift Container Platform&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;🛫 &lt;a href=&quot;https://kserve.github.io/website/docs/getting-started/genai-first-isvc&quot;&gt;Create your first InferenceService&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;💡 &lt;a href=&quot;https://raw.githubusercontent.com/kserve/kserve/master/ROADMAP.md&quot;&gt;Roadmap&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;📘 &lt;a href=&quot;https://kserve.github.io/website/docs/reference/crd-api&quot;&gt;InferenceService API Reference&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;🧰 &lt;a href=&quot;https://kserve.github.io/website/docs/developer-guide&quot;&gt;Developer Guide&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;✍️ &lt;a href=&quot;https://kserve.github.io/website/docs/developer-guide/contribution&quot;&gt;Contributor Guide&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;🤝 &lt;a href=&quot;https://kserve.github.io/website/docs/community/adopters&quot;&gt;Adopters&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;Star History&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.star-history.com/#kserve/kserve&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=kserve/kserve&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Contributors&lt;/h3&gt; 
&lt;p&gt;Thanks to all of our amazing contributors!&lt;/p&gt; 
&lt;a href=&quot;https://github.com/kserve/kserve/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=kserve/kserve&quot; /&gt; &lt;/a&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/fc066f09f584ad5390c5c9415da6e110dd3677d4e73d40fd47574a541ce52956/kserve/kserve" medium="image" />
      
    </item>
    
  </channel>
</rss>
