<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    
    <title>GitHub Go Monthly Trending Repositories</title>
    <description>Monthly Trending Repositories of Go on GitHub</description>
    
    <pubDate>Mon, 17 Aug 2026 02:20:32 GMT</pubDate>
    <link>https://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>alibaba/open-code-review</title>
      <link>https://github.com/alibaba/open-code-review</link>
      <description>&lt;p&gt;Fast, efficient, battle-tested at Alibaba&#39;s scale. Hybrid architecture code review tool: deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI &amp; Anthropic compatible.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://open-codereview.ai&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/imgs/logo-core.svg?sanitize=true&quot; alt=&quot;OpenCodeReview logo&quot; width=&quot;180&quot; /&gt; &lt;/a&gt; 
 &lt;h1&gt;OpenCodeReview&lt;/h1&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/41087?utm_source=repository-badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=badge-repository-41087&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/41087&quot; alt=&quot;alibaba%2Fopen-code-review | Trendshift&quot; style=&quot;width: 280px; height: 60px;&quot; width=&quot;280&quot; height=&quot;60&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://trendshift.io/repositories/41087&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/trendshift/repositories/41087/weekly?language=Go&quot; alt=&quot;alibaba%2Fopen-code-review | Trendshift&quot; style=&quot;width: 280px; height: 60px;&quot; width=&quot;280&quot; height=&quot;60&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.npmjs.com/package/@alibaba-group/open-code-review&quot;&gt;&lt;img alt=&quot;npm&quot; src=&quot;https://img.shields.io/npm/v/@alibaba-group/open-code-review?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/alibaba/open-code-review/actions/workflows/release.yml&quot;&gt;&lt;img alt=&quot;Build status&quot; src=&quot;https://img.shields.io/github/actions/workflow/status/alibaba/open-code-review/release.yml?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/alibaba/open-code-review/raw/main/LICENSE&quot;&gt;&lt;img alt=&quot;License&quot; src=&quot;https://img.shields.io/github/license/alibaba/open-code-review?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://deepwiki.com/alibaba/open-code-review&quot;&gt;&lt;img alt=&quot;Ask DeepWiki&quot; src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.bestpractices.dev/projects/13328&quot;&gt;&lt;img alt=&quot;OpenSSF Best Practices&quot; src=&quot;https://img.shields.io/badge/OpenSSF-Gold-D4AF37?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/#supported-platforms&quot;&gt;&lt;img alt=&quot;Windows&quot; src=&quot;https://img.shields.io/badge/Windows-supported-blue.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/#supported-platforms&quot;&gt;&lt;img alt=&quot;macOS&quot; src=&quot;https://img.shields.io/badge/macOS-supported-blue.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/#supported-platforms&quot;&gt;&lt;img alt=&quot;Linux&quot; src=&quot;https://img.shields.io/badge/Linux-supported-blue.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/#supported-agents&quot;&gt;&lt;img alt=&quot;Claude Code&quot; src=&quot;https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/#supported-agents&quot;&gt;&lt;img alt=&quot;Codex&quot; src=&quot;https://img.shields.io/badge/Codex-supported-blueviolet.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/#supported-agents&quot;&gt;&lt;img alt=&quot;Cursor&quot; src=&quot;https://img.shields.io/badge/Cursor-supported-blueviolet.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; English | &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/README.ja-JP.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/README.ko-KR.md&quot;&gt;한국어&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/README.ru-RU.md&quot;&gt;Русский&lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;What is Open Code Review?&lt;/h2&gt; 
&lt;p&gt;Open Code Review is an AI-powered code review CLI tool. It originated as Alibaba Group&#39;s internal official AI code review assistant — over the past two years, it has served tens of thousands of developers and identified millions of code defects. After thorough validation at massive scale, we incubated it into an open source project for the community. Simply configure a model endpoint to get started.&lt;/p&gt; 
&lt;p&gt;It reads Git diffs, sends changed files to a configurable LLM via an agent with tool-use capabilities, and generates structured review comments with line-level precision. The agent can read full file contents, search the codebase, inspect other changed files for context, and produce deep reviews — not just surface-level diff feedback. Beyond diff review, &lt;code&gt;ocr scan&lt;/code&gt; reviews entire files for auditing unfamiliar codebases or directories that have no meaningful diff.&lt;/p&gt; 
&lt;p&gt;Visit the &lt;a href=&quot;https://open-codereview.ai&quot;&gt;official website&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/imgs/highlights-en.png&quot; alt=&quot;Highlights&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Benchmark&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Compared to general-purpose agents (Claude Code), Open Code Review achieves significantly higher &lt;strong&gt;Precision&lt;/strong&gt; and &lt;strong&gt;F1&lt;/strong&gt; with the same underlying model, while consuming only &lt;strong&gt;~1/9 of the tokens&lt;/strong&gt; and completing reviews faster. Note that its Recall is lower than general-purpose agents — a deliberate trade-off favoring precision over noise.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;A real-world code review benchmark built from &lt;strong&gt;50&lt;/strong&gt; popular open-source repositories, &lt;strong&gt;200&lt;/strong&gt; real Pull Requests, and &lt;strong&gt;10&lt;/strong&gt; programming languages — cross-validated by 80+ senior engineers (&lt;strong&gt;1,505&lt;/strong&gt; annotated ground-truth issues).&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/datasets/Alibaba-Aone/aacr-bench&quot;&gt;&lt;img src=&quot;https://huggingface.co/favicon.ico&quot; alt=&quot;Hugging Face&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Explore the AACR-Bench dataset on Hugging Face&lt;/a&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Metric&lt;/th&gt; 
   &lt;th&gt;What it measures&lt;/th&gt; 
   &lt;th&gt;Why it matters&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;F1&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Harmonic mean of precision and recall&lt;/td&gt; 
   &lt;td&gt;Best single number for overall review quality&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Precision&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Proportion of reported issues that are real defects&lt;/td&gt; 
   &lt;td&gt;Higher = fewer false alarms to triage&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Recall&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Proportion of real defects that are found&lt;/td&gt; 
   &lt;td&gt;Higher = fewer issues slip through review&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Avg Time&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Wall-clock time per review&lt;/td&gt; 
   &lt;td&gt;Matters for CI pipeline latency&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Avg Token&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Total tokens consumed per review&lt;/td&gt; 
   &lt;td&gt;Directly impacts API cost&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/imgs/benchmark-en.png&quot; alt=&quot;Benchmark&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Why Open Code Review?&lt;/h2&gt; 
&lt;h3&gt;The Problem with General-Purpose Agents&lt;/h3&gt; 
&lt;p&gt;If you&#39;ve used general-purpose agents like Claude Code with Skills for code review, you&#39;ve likely encountered these pain points:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Incomplete coverage&lt;/strong&gt; — On larger changesets, agents tend to &quot;cut corners,&quot; selectively reviewing only some files and missing others.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Position drift&lt;/strong&gt; — Reported issues frequently don&#39;t match the actual code location, with line numbers or file references drifting off target.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Unstable quality&lt;/strong&gt; — Natural-language-driven Skills are hard to debug, and review quality fluctuates significantly with minor prompt variations.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The root cause: a purely language-driven architecture lacks hard constraints on the review process.&lt;/p&gt; 
&lt;h3&gt;Core Design: Deterministic Engineering × Agent Hybrid&lt;/h3&gt; 
&lt;p&gt;Open Code Review&#39;s core philosophy is to combine deterministic engineering with an agent, each handling what it does best.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Deterministic Engineering — Hard Constraints&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;For review steps that &lt;em&gt;must not go wrong&lt;/em&gt;, engineering logic — not the language model — guarantees correctness:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Precise file selection&lt;/strong&gt; — Determines exactly which files need review and which should be filtered, ensuring no important change is missed.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart file bundling&lt;/strong&gt; — Groups related files into a single review unit (e.g., &lt;code&gt;message_en.properties&lt;/code&gt; and &lt;code&gt;message_zh.properties&lt;/code&gt; are bundled together). Each bundle runs as a sub-agent with isolated context — a divide-and-conquer strategy that stays stable on very large changesets and naturally supports concurrent review.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Fine-grained rule matching&lt;/strong&gt; — Matches review rules to each file&#39;s characteristics, keeping the model&#39;s attention sharply focused and eliminating information noise at the source. Compared to purely language-driven rule guidance, template-engine-based rule matching is more stable and predictable.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;External positioning and reflection modules&lt;/strong&gt; — Independent comment-positioning and comment-reflection modules systematically improve both the location accuracy and content accuracy of AI feedback.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Agent — Dynamic Decision-Making&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The agent&#39;s strengths are concentrated where they matter most — dynamic decisions and dynamic context retrieval:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Scenario-tuned prompts&lt;/strong&gt; — Prompt templates deeply optimized for code review, improving effectiveness while reducing token consumption.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scenario-tuned toolset&lt;/strong&gt; — Distilled from deep analysis of tool-call traces in large-scale production data — including call frequency distributions, per-tool repetition rates, and the impact of new tools on the overall call chain — resulting in a purpose-built toolset that is more stable and predictable for code review than a generic agent toolkit.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to Use&lt;/h2&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Git &amp;gt;= 2.41&lt;/strong&gt; — Open Code Review relies on Git for diff generation, code search, and repository operations.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;CLI&lt;/h3&gt; 
&lt;h4&gt;Install&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g @alibaba-group/open-code-review
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After installation, the &lt;code&gt;ocr&lt;/code&gt; command is available globally.&lt;/p&gt; 
&lt;p&gt;For other installation methods (install script, GitHub Release binary, from source), see &lt;a href=&quot;https://open-codereview.ai/docs/installation&quot;&gt;Installation&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Quick Start&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;1. Configure LLM&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;You must configure an LLM before reviewing code, unless you use &lt;a href=&quot;https://open-codereview.ai/docs/delegate&quot;&gt;Delegation Mode&lt;/a&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ocr config provider          # Select a built-in provider or add a custom one
ocr config model             # Pick a model for the active provider
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/imgs/providers.jpg&quot; alt=&quot;Provider setup&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;The interactive UI guides you through provider selection, API key entry, and model configuration, then automatically tests connectivity.&lt;/p&gt; 
&lt;p&gt;For CLI setup, environment variables, custom providers, and other advanced configuration, see &lt;a href=&quot;https://open-codereview.ai/docs/configuration&quot;&gt;Configuration&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Review&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd your-project

# Workspace mode — review all staged, unstaged, and untracked changes
ocr review

# Branch range — reviews feature-branch&#39;s changes since it diverged from main (merge-base mode)
ocr review --from main --to feature-branch

# Single commit
ocr review --commit abc123

# Resume an interrupted range or commit review
ocr session list
ocr review --from main --to feature-branch --resume &amp;lt;session-id&amp;gt;

# Full-file scan — review whole files instead of a diff (no git history needed)
ocr scan                          # scan the entire repository
ocr scan --path internal/agent    # scan a directory or specific files
ocr scan --resume &amp;lt;session-id&amp;gt;   # resume an interrupted full-file scan

# Delegation mode — let your AI coding agent perform the review itself
# OCR handles file selection and rule resolution; no LLM configuration needed
ocr delegate preview
ocr delegate rule src/main.go src/handler.go
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Full documentation lives at &lt;strong&gt;&lt;a href=&quot;https://open-codereview.ai/docs&quot;&gt;open-codereview.ai/docs&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/quickstart&quot;&gt;Quickstart&lt;/a&gt; — install and run your first review&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/installation&quot;&gt;Installation&lt;/a&gt; — all platforms and package managers&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/cli-reference&quot;&gt;CLI Reference&lt;/a&gt; — every command and flag&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/review-rules&quot;&gt;Review Rules&lt;/a&gt; — customize review rules with path filtering and targeting&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/configuration&quot;&gt;Configuration&lt;/a&gt; — config keys and environment variables&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/mcp&quot;&gt;MCP Server&lt;/a&gt; — extend the review agent with external tools&lt;/li&gt; 
 &lt;li&gt;Coding Agent Integrations — choose the platform you use 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/README.md#claude-code&quot;&gt;Claude Code&lt;/a&gt; — install a plugin with review slash commands&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/README.md#codex&quot;&gt;Codex&lt;/a&gt; — install a plugin with callable review skills&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/README.md#cursor&quot;&gt;Cursor&lt;/a&gt; — install a plugin with portable review skills&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/opencode/README.md&quot;&gt;OpenCode&lt;/a&gt; — install native review tools and slash commands&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/qca/README.md&quot;&gt;QCA Forward&lt;/a&gt; — run delegation mode with the QCA host model and a ready-to-publish template&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/agent-skill&quot;&gt;Skill-compatible agents&lt;/a&gt; — install the portable agent skill&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Review Execution Modes — after integration, choose which LLM performs the review 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/configuration&quot;&gt;Default (OCR-managed)&lt;/a&gt; — OCR runs the review using its configured LLM&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/delegate&quot;&gt;Delegation Mode&lt;/a&gt; — your coding agent runs the review using its own LLM; no OCR API key required&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/cicd&quot;&gt;CI/CD Integration&lt;/a&gt; — GitHub Actions, GitLab CI, GitFlic CI, and Gerrit integration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/viewer&quot;&gt;Session Viewer&lt;/a&gt; — browse and replay review sessions in browser&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/telemetry&quot;&gt;Telemetry&lt;/a&gt; — OpenTelemetry integration for observability&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://open-codereview.ai/docs/faq&quot;&gt;FAQ&lt;/a&gt; — common questions and troubleshooting&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;This project exists thanks to all the people who contribute. See &lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for development setup, coding guidelines, and how to submit pull requests.&lt;/p&gt; 
&lt;a href=&quot;https://github.com/alibaba/open-code-review/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=alibaba/open-code-review&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/alibaba/open-code-review/main/LICENSE&quot;&gt;Apache-2.0&lt;/a&gt; — Copyright 2026 Alibaba&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ltaoo/wx_channels_download</title>
      <link>https://github.com/ltaoo/wx_channels_download</link>
      <description>&lt;p&gt;微信视频号下载器&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;微信视频号下载器&lt;/h1&gt; 
&lt;p&gt;体积小、使用简单、支持 macOS 和 Windows 系统。&lt;/p&gt; 
&lt;h2&gt;使用说明&lt;/h2&gt; 
&lt;p&gt;下载&lt;a href=&quot;https://github.com/ltaoo/wx_channels_download/releases&quot;&gt;构建包&lt;/a&gt;，&lt;strong&gt;以管理员身份运行&lt;/strong&gt;，首次打开会自动安装证书，然后启动服务。&lt;/p&gt; 
&lt;p&gt;当终端提示「代理服务启动成功」就说明可以使用了。&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ltaoo/wx_channels_download/main/docs/assets/app_screenshot1.png&quot; alt=&quot;正常使用&quot; /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;已安装证书会跳过安装证书步骤。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;打开微信 PC 端，点击需要下载的视频，在视频下方的操作按钮一栏，会多出一个下载按钮，如下所示&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ltaoo/wx_channels_download/main/docs/assets/screenshot1.png&quot; alt=&quot;视频下载按钮&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;如果没有，在页面侧边或底部会有悬浮按钮，拥有相同的功能&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;首页推荐&lt;/th&gt; 
   &lt;th&gt;视频详情页&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ltaoo/wx_channels_download/main/docs/assets/fixed_btn1.jpg&quot; alt=&quot;首页推荐&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ltaoo/wx_channels_download/main/docs/assets/fixed_btn2.jpg&quot; alt=&quot;视频详情页&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;等待视频开始播放，然后暂停视频，点击下载按扭即可下载视频。下载成功后，会在上方显示已下载的文件，下载文件名最后面会标志该视频质量。&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ltaoo/wx_channels_download/main/docs/assets/screenshot2.png&quot; alt=&quot;视频下载成功&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;下载按钮默认会下载视频号默认质量的视频（即当前播放的视频，一般都是体积最小的），可以在下拉菜单下载其他质量的视频&lt;/p&gt; 
&lt;h2&gt;开发说明&lt;/h2&gt; 
&lt;p&gt;先以 管理员身份 启动终端，然后 &lt;code&gt;go run main.go&lt;/code&gt; 即可。&lt;/p&gt; 
&lt;h2&gt;打包&lt;/h2&gt; 
&lt;p&gt;参考 &lt;code&gt;build/build.sh&lt;/code&gt; 脚本。&lt;/p&gt; 
&lt;h2&gt;感谢&lt;/h2&gt; 
&lt;p&gt;前端解密部分参考自 &lt;br /&gt; &lt;a href=&quot;https://github.com/kanadeblisst00/WechatVideoSniffer2.0&quot;&gt;https://github.com/kanadeblisst00/WechatVideoSniffer2.0&lt;/a&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;后端解密代码来自 &lt;br /&gt; &lt;a href=&quot;https://github.com/Hanson/WechatSphDecrypt&quot;&gt;https://github.com/Hanson/WechatSphDecrypt&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;⚠️ 免责声明&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;本项目为开源项目
仅用于技术交流学习和研究的目的
请遵守法律法规,请勿用作任何非法用途
否则造成一切后果自负
若您下载并使用即视为您知晓并同意
&lt;/code&gt;&lt;/pre&gt;</description>
      
    </item>
    
    <item>
      <title>cli/cli</title>
      <link>https://github.com/cli/cli</link>
      <description>&lt;p&gt;GitHub’s official command line tool&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;GitHub CLI&lt;/h1&gt; 
&lt;p&gt;&lt;code&gt;gh&lt;/code&gt; is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with &lt;code&gt;git&lt;/code&gt; and your code.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/98482/84171218-327e7a80-aa40-11ea-8cd1-5177fc2d0e72.png&quot; alt=&quot;screenshot of gh pr status&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;GitHub CLI is supported for users on &lt;a href=&quot;http://GitHub.com&quot;&gt;GitHub.com&lt;/a&gt;, GitHub Enterprise Cloud, and GitHub Enterprise Server 2.20+ with support for macOS, Windows, and Linux.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;For &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/#installation&quot;&gt;installation options see below&lt;/a&gt;, for usage instructions &lt;a href=&quot;https://cli.github.com/manual/&quot;&gt;see the manual&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Agent skills&lt;/h2&gt; 
&lt;p&gt;An &lt;a href=&quot;https://agentskills.io&quot;&gt;agent skill&lt;/a&gt; is available for driving &lt;code&gt;gh&lt;/code&gt; from coding agents. Install or update it with the built-in &lt;code&gt;gh skill&lt;/code&gt; command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;# Install the skill (user scope recommended)
gh skill install cli/cli gh --scope user

# Update the skill after a `gh` release
gh skill update gh
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;If anything feels off or if you feel that some functionality is missing, please check out the &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/.github/CONTRIBUTING.md&quot;&gt;contributing page&lt;/a&gt;. There you will find instructions for sharing your feedback, building the tool locally, and submitting pull requests to the project.&lt;/p&gt; 
&lt;p&gt;If you are a hubber and are interested in shipping new commands for the CLI, check out our &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/working-with-us.md&quot;&gt;doc on internal contributions&lt;/a&gt;&lt;/p&gt; 
&lt;!-- this anchor is linked to from elsewhere, so avoid renaming it --&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_macos.md&quot;&gt;macOS&lt;/a&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_macos.md#homebrew&quot;&gt;Homebrew&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_macos.md#precompiled-binaries&quot;&gt;Precompiled binaries&lt;/a&gt; on &lt;a href=&quot;https://github.com/cli/cli/releases/latest&quot;&gt;releases page&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For additional macOS packages and installers, see &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_macos.md#community-unofficial&quot;&gt;community-supported docs&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_linux.md&quot;&gt;Linux &amp;amp; Unix&lt;/a&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_linux.md#debian&quot;&gt;Debian, Raspberry Pi, Ubuntu&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_linux.md#rpm&quot;&gt;Amazon Linux, CentOS, Fedora, openSUSE, RHEL, SUSE&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_linux.md#precompiled-binaries&quot;&gt;Precompiled binaries&lt;/a&gt; on &lt;a href=&quot;https://github.com/cli/cli/releases/latest&quot;&gt;releases page&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For additional Linux &amp;amp; Unix packages and installers, see &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_linux.md#community-unofficial&quot;&gt;community-supported docs&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_windows.md&quot;&gt;Windows&lt;/a&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_windows.md#winget&quot;&gt;WinGet&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_windows.md#precompiled-binaries&quot;&gt;Precompiled binaries&lt;/a&gt; on &lt;a href=&quot;https://github.com/cli/cli/releases/latest&quot;&gt;releases page&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For additional Windows packages and installers, see &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_windows.md#community-unofficial&quot;&gt;community-supported docs&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Build from source&lt;/h3&gt; 
&lt;p&gt;See here on how to &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/install_source.md&quot;&gt;build GitHub CLI from source&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;GitHub Codespaces&lt;/h3&gt; 
&lt;p&gt;To add GitHub CLI to your codespace, add the following to your &lt;a href=&quot;https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/adding-features-to-a-devcontainer-file&quot;&gt;devcontainer file&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&quot;features&quot;: {
  &quot;ghcr.io/devcontainers/features/github-cli:1&quot;: {}
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;GitHub Actions&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners&quot;&gt;GitHub-hosted runners&lt;/a&gt; have the GitHub CLI pre-installed, which is updated weekly.&lt;/p&gt; 
&lt;p&gt;If a specific version is needed, your GitHub Actions workflow will need to install it based on the &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/#macos&quot;&gt;macOS&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/#linux--unix&quot;&gt;Linux &amp;amp; Unix&lt;/a&gt;, or &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/#windows&quot;&gt;Windows&lt;/a&gt; instructions above.&lt;/p&gt; 
&lt;p&gt;For information on all pre-installed tools, see &lt;a href=&quot;https://github.com/actions/runner-images&quot;&gt;&lt;code&gt;actions/runner-images&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Verification of binaries&lt;/h3&gt; 
&lt;p&gt;Starting with v2.93.0, releases of &lt;code&gt;gh&lt;/code&gt; are published as immutable releases. For more information, see &lt;a href=&quot;https://docs.github.com/en/code-security/concepts/supply-chain-security/immutable-releases&quot;&gt;Immutable releases&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Since version 2.50.0, &lt;code&gt;gh&lt;/code&gt; has been producing &lt;a href=&quot;https://github.blog/changelog/2024-06-25-artifact-attestations-is-generally-available/&quot;&gt;Build Provenance Attestation&lt;/a&gt;, enabling a cryptographically verifiable paper-trail back to the origin GitHub repository, git revision, and build instructions used. The build provenance attestations are signed and rely on Public Good &lt;a href=&quot;https://www.sigstore.dev/&quot;&gt;Sigstore&lt;/a&gt; for PKI.&lt;/p&gt; 
&lt;p&gt;There are two common ways to verify a downloaded release, depending on whether &lt;code&gt;gh&lt;/code&gt; is already installed or not. If &lt;code&gt;gh&lt;/code&gt; is installed, it&#39;s trivial to verify a new release:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Option 1: Using &lt;code&gt;gh&lt;/code&gt; if already installed:&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;$ gh at verify -R cli/cli gh_2.62.0_macOS_arm64.zip
Loaded digest sha256:fdb77f31b8a6dd23c3fd858758d692a45f7fc76383e37d475bdcae038df92afc for file://gh_2.62.0_macOS_arm64.zip
Loaded 1 attestation from GitHub API
✓ Verification succeeded!

sha256:fdb77f31b8a6dd23c3fd858758d692a45f7fc76383e37d475bdcae038df92afc was attested by:
REPO     PREDICATE_TYPE                  WORKFLOW
cli/cli  https://slsa.dev/provenance/v1  .github/workflows/deployment.yml@refs/heads/trunk
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Option 2: Using Sigstore &lt;a href=&quot;https://github.com/sigstore/cosign&quot;&gt;&lt;code&gt;cosign&lt;/code&gt;&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;To perform this, download the &lt;a href=&quot;https://github.com/cli/cli/attestations&quot;&gt;attestation&lt;/a&gt; for the downloaded release and use cosign to verify the authenticity of the downloaded release:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;$ cosign verify-blob-attestation --bundle cli-cli-attestation-3120304.sigstore.json \
      --new-bundle-format \
      --certificate-oidc-issuer=&quot;https://token.actions.githubusercontent.com&quot; \
      --certificate-identity=&quot;https://github.com/cli/cli/.github/workflows/deployment.yml@refs/heads/trunk&quot; \
      gh_2.62.0_macOS_arm64.zip
Verified OK
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Comparison with hub&lt;/h2&gt; 
&lt;p&gt;For many years, &lt;a href=&quot;https://github.com/github/hub&quot;&gt;hub&lt;/a&gt; was the unofficial GitHub CLI tool. &lt;code&gt;gh&lt;/code&gt; is a new project that helps us explore what an official GitHub CLI tool can look like with a fundamentally different design. While both tools bring GitHub to the terminal, &lt;code&gt;hub&lt;/code&gt; behaves as a proxy to &lt;code&gt;git&lt;/code&gt;, and &lt;code&gt;gh&lt;/code&gt; is a standalone tool. Check out our &lt;a href=&quot;https://raw.githubusercontent.com/cli/cli/trunk/docs/gh-vs-hub.md&quot;&gt;more detailed explanation&lt;/a&gt; to learn more.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>gastownhall/beads</title>
      <link>https://github.com/gastownhall/beads</link>
      <description>&lt;p&gt;Beads - A memory upgrade for your coding agent&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;bd - Beads&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Distributed graph issue tracker for AI agents, powered by &lt;a href=&quot;https://github.com/dolthub/dolt&quot;&gt;Dolt&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Platforms:&lt;/strong&gt; macOS, Linux, Windows, FreeBSD&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/gastownhall/beads&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/steveyegge/beads&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/steveyegge/beads&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/gastownhall/beads/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/gastownhall/beads&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@beads/bd&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@beads/bd&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pypi.org/project/beads-mcp/&quot;&gt;&lt;img src=&quot;https://img.shields.io/pypi/v/beads-mcp&quot; alt=&quot;PyPI&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href=&quot;https://beads.gascity.com/&quot;&gt;https://beads.gascity.com/&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Beads provides a persistent, structured memory for coding agents. It replaces messy markdown plans with a dependency-aware graph, allowing agents to handle long-horizon tasks without losing context.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
    create[&quot;bd create&amp;lt;br/&amp;gt;new bead&quot;] --&amp;gt; depgraph[&quot;dependency&amp;lt;br/&amp;gt;graph&quot;]
    depgraph --&amp;gt; ready[&quot;bd ready&amp;lt;br/&amp;gt;claimable work&quot;]
    ready --&amp;gt; claim[&quot;bd update --claim&amp;lt;br/&amp;gt;agent takes it&quot;]
    claim --&amp;gt; close[&quot;bd close&amp;lt;br/&amp;gt;work done&quot;]
    close --&amp;gt;|blockers released| ready
    depgraph &amp;lt;--&amp;gt;|&quot;bd dolt push / pull&quot;| remote[(&quot;other machines&amp;lt;br/&amp;gt;and agents&quot;)]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;⚡ Quick Start&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install beads CLI (system-wide - don&#39;t clone this repo into your project)
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash

# Initialize in YOUR project
cd your-project
bd init

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

- Run `bd prime` for workflow context and command guidance.
- Use `bd ready`, `bd show &amp;lt;id&amp;gt;`, `bd update &amp;lt;id&amp;gt; --claim`, and `bd close &amp;lt;id&amp;gt;`.
- Use `bd remember &quot;insight&quot;` for persistent project memory; do not create MEMORY.md files.
- Do not use markdown TODO lists for task tracking.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;🛠 Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/dolthub/dolt&quot;&gt;Dolt&lt;/a&gt;-Powered:&lt;/strong&gt; Version-controlled SQL database with cell-level merge, native branching, and built-in sync via Dolt remotes.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Agent-Optimized:&lt;/strong&gt; JSON output, dependency tracking, and auto-ready task detection.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zero Conflict:&lt;/strong&gt; Hash-based IDs (&lt;code&gt;bd-a1b2&lt;/code&gt;) prevent merge collisions in multi-agent/multi-branch workflows.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Compaction:&lt;/strong&gt; Semantic &quot;memory decay&quot; summarizes old closed tasks to save context window.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Messaging:&lt;/strong&gt; Message issue type with threading (&lt;code&gt;--thread&lt;/code&gt;), ephemeral lifecycle, and mail delegation.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Graph Links:&lt;/strong&gt; &lt;code&gt;relates-to&lt;/code&gt;, &lt;code&gt;duplicates&lt;/code&gt;, &lt;code&gt;supersedes&lt;/code&gt;, and &lt;code&gt;replies-to&lt;/code&gt; for knowledge graphs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📖 Essential Commands&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Action&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd ready&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;List tasks with no open blockers.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd create &quot;Title&quot; -p 0&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create a P0 task.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd update &amp;lt;id&amp;gt; --claim&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Atomically claim a task (sets assignee + in_progress).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd dep add &amp;lt;child&amp;gt; &amp;lt;parent&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Link tasks (blocks, related, parent-child).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd show &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;View task details and audit trail.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd prime&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Print agent workflow context and persistent memories.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bd remember &quot;insight&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Store project memory that &lt;code&gt;bd prime&lt;/code&gt; injects later.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;🔗 Hierarchy &amp;amp; Workflow&lt;/h2&gt; 
&lt;p&gt;Beads supports hierarchical IDs for epics:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;bd-a3f8&lt;/code&gt; (Epic)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;bd-a3f8.1&lt;/code&gt; (Task)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;bd-a3f8.1.1&lt;/code&gt; (Sub-task)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Stealth Mode:&lt;/strong&gt; Run &lt;code&gt;bd init --stealth&lt;/code&gt; to use Beads locally without committing files to the main repo. Perfect for personal use on shared projects. See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/#-git-free-usage&quot;&gt;Git-Free Usage&lt;/a&gt; below.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Contributor vs Maintainer:&lt;/strong&gt; When working on open-source projects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt; (forked repos): Run &lt;code&gt;bd init --contributor&lt;/code&gt; to route planning issues to a separate repo (e.g., &lt;code&gt;~/.beads-planning&lt;/code&gt;). Keeps experimental work out of PRs.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Maintainers&lt;/strong&gt; (write access): Beads auto-detects maintainer role via SSH URLs or HTTPS with credentials. Only need &lt;code&gt;git config beads.role maintainer&lt;/code&gt; if using GitHub HTTPS without credentials but you have write access.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📦 Installation&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install beads           # macOS / Linux (recommended)
npm install -g @beads/bd     # Node.js users
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Other methods:&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md#quick-install-script-all-platforms&quot;&gt;install script&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md#a-note-on-go-install-capability&quot;&gt;go install&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md#build-dependencies-contributors-only&quot;&gt;from source&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md#windows-11&quot;&gt;Windows&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md#linux&quot;&gt;Arch AUR&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; macOS, Linux, Windows, or FreeBSD. See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md&quot;&gt;docs/getting-started/installation.md&lt;/a&gt; for complete installation guide.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Upgrading?&lt;/strong&gt; Replacing the binary is not always the whole story. Short version: sync remote-backed databases with your current &lt;code&gt;bd&lt;/code&gt;, back up with &lt;code&gt;bd export --all&lt;/code&gt;, upgrade the binary, then run &lt;code&gt;bd info --whats-new&lt;/code&gt;, &lt;code&gt;bd hooks install&lt;/code&gt;, and &lt;code&gt;bd version&lt;/code&gt;. If the upgrade crosses a schema migration on a remote-backed database, exactly one designated clone runs &lt;code&gt;bd migrate&lt;/code&gt; and &lt;code&gt;bd dolt push&lt;/code&gt;; other clones install the new binary and run &lt;code&gt;bd bootstrap&lt;/code&gt;. See the full &lt;a href=&quot;https://beads.gascity.com/getting-started/upgrading&quot;&gt;upgrade guide&lt;/a&gt; or &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md#updating-bd&quot;&gt;docs/getting-started/installation.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Security And Verification&lt;/h3&gt; 
&lt;p&gt;Before trusting any downloaded binary, verify its checksum against the release &lt;code&gt;checksums.txt&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The install scripts verify release checksums before install. For manual installs, do this verification yourself before first run.&lt;/p&gt; 
&lt;p&gt;On macOS, &lt;code&gt;scripts/install.sh&lt;/code&gt; preserves the downloaded signature by default. Local ad-hoc re-signing is explicit opt-in via &lt;code&gt;BEADS_INSTALL_RESIGN_MACOS=1&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/reference/antivirus.md&quot;&gt;docs/reference/antivirus.md&lt;/a&gt; for Windows AV false-positive guidance and verification workflow.&lt;/p&gt; 
&lt;h2&gt;💾 Storage Modes&lt;/h2&gt; 
&lt;p&gt;Beads uses &lt;a href=&quot;https://github.com/dolthub/dolt&quot;&gt;Dolt&lt;/a&gt; as its database. Two modes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Embedded (default)&lt;/strong&gt; — &lt;code&gt;bd init&lt;/code&gt;. Dolt runs in-process, data lives in &lt;code&gt;.beads/embeddeddolt/&lt;/code&gt;, single writer. Recommended for most users.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Server&lt;/strong&gt; — &lt;code&gt;bd init --server&lt;/code&gt;. Connects to an external &lt;code&gt;dolt sql-server&lt;/code&gt; for multiple concurrent writers; data lives in &lt;code&gt;.beads/dolt/&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Cross-machine sync uses &lt;code&gt;bd dolt push&lt;/code&gt; / &lt;code&gt;bd dolt pull&lt;/code&gt; against &lt;code&gt;refs/dolt/data&lt;/code&gt; on your git remote; &lt;code&gt;.beads/issues.jsonl&lt;/code&gt; is an export for viewers and interchange, not the source of truth or a backup. Back up and migrate between modes with &lt;code&gt;bd backup&lt;/code&gt;; reclaim space with &lt;code&gt;bd prune&lt;/code&gt; / &lt;code&gt;bd purge&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Full detail — connection flags, sockets, maintenance, backup, and migration — in the &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/architecture/dolt.md&quot;&gt;Dolt backend guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Schema Version Guard&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;bd&lt;/code&gt; checks the database schema version at open time. If the database has been migrated by a newer binary and an older binary tries to open it, &lt;code&gt;bd&lt;/code&gt; exits with an actionable error rather than issuing queries that fail with cryptic SQL errors:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;schema version mismatch: database is at v45, binary knows up to v42 (3 migrations ahead)

  Your bd binary is stale. Queries for dropped or renamed columns will fail
  with cryptic SQL errors (e.g. &quot;column X could not be found in any table in scope&quot;).

  Rebuild from main:
    CGO_ENABLED=0 go build -tags gms_pure_go ./cmd/bd

  Or install the latest release:
    CGO_ENABLED=0 go install -tags gms_pure_go github.com/steveyegge/beads/cmd/bd@latest

  To proceed despite the risk (some read commands may still work):
    BD_IGNORE_SCHEMA_SKEW=1 bd &amp;lt;command&amp;gt;
    bd --ignore-schema-skew &amp;lt;command&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;When this fires:&lt;/strong&gt; only when the database schema is &lt;em&gt;ahead&lt;/em&gt; of the binary (a newer binary migrated the database; this binary doesn&#39;t know those migrations). Normal upgrades, where the binary migrates the database forward, are unaffected.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Escape hatch:&lt;/strong&gt; &lt;code&gt;BD_IGNORE_SCHEMA_SKEW=1&lt;/code&gt; (or &lt;code&gt;--ignore-schema-skew&lt;/code&gt;) bypasses the guard with a warning on stderr. Use this only if you know the forward migrations are additive and safe for your specific workload.&lt;/p&gt; 
&lt;h2&gt;🌐 Community Tools&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/community-tools.md&quot;&gt;docs/community-tools.md&lt;/a&gt; for a curated list of community-built UIs, extensions, and integrations—including terminal interfaces, web UIs, editor extensions, and native apps.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/related-projects.md&quot;&gt;docs/related-projects.md&lt;/a&gt; for adjacent or complementary projects that solve different problems in the same neighborhood.&lt;/p&gt; 
&lt;h2&gt;🚀 Git-Free Usage&lt;/h2&gt; 
&lt;p&gt;Beads works without git. The Dolt database is the storage backend — git integration (hooks, repo discovery, identity) is optional.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Initialize without git
export BEADS_DIR=/path/to/your/project/.beads
bd init --quiet --stealth

# All core commands work with zero git calls
bd create &quot;Fix auth bug&quot; -p 1 -t bug
bd ready --json
bd update bd-a1b2 --claim
bd prime
bd close bd-a1b2 &quot;Fixed&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;BEADS_DIR&lt;/code&gt; tells bd where to put the &lt;code&gt;.beads/&lt;/code&gt; database directory, bypassing git repo discovery. &lt;code&gt;--stealth&lt;/code&gt; sets &lt;code&gt;no-git-ops: true&lt;/code&gt; in config, disabling all git hook installation and git operations.&lt;/p&gt; 
&lt;p&gt;This is useful for:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Non-git VCS&lt;/strong&gt; (Sapling, Jujutsu, Piper) — no &lt;code&gt;.git/&lt;/code&gt; directory needed&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Monorepos&lt;/strong&gt; — point &lt;code&gt;BEADS_DIR&lt;/code&gt; at a specific subdirectory&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;CI/CD&lt;/strong&gt; — isolated task tracking without repo-level side effects&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Evaluation/testing&lt;/strong&gt; — ephemeral databases in &lt;code&gt;/tmp&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📝 Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://beads.gascity.com/&quot;&gt;Documentation site&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/getting-started/installation.md&quot;&gt;Installing&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/core-concepts/sync-concepts.md&quot;&gt;Sync Concepts&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/AGENT_INSTRUCTIONS.md&quot;&gt;Agent Workflow&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/integrations/copilot-cli.md&quot;&gt;Copilot CLI Setup&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/integrations/github-copilot.md&quot;&gt;Copilot VS Code MCP&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/ARTICLES.md&quot;&gt;Articles&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/reference/protected-branches.md&quot;&gt;Sync Branch Mode&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/reference/troubleshooting.md&quot;&gt;Troubleshooting&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/gastownhall/beads/main/docs/reference/faq.md&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://deepwiki.com/gastownhall/beads&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>tailscale/tailscale</title>
      <link>https://github.com/tailscale/tailscale</link>
      <description>&lt;p&gt;The easiest, most secure way to use WireGuard and 2FA.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Tailscale&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://tailscale.com&quot;&gt;https://tailscale.com&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Private WireGuard® networks made easy&lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;This repository contains the majority of Tailscale&#39;s open source code. Notably, it includes the &lt;code&gt;tailscaled&lt;/code&gt; daemon and the &lt;code&gt;tailscale&lt;/code&gt; CLI tool. The &lt;code&gt;tailscaled&lt;/code&gt; daemon runs on Linux, Windows, &lt;a href=&quot;https://tailscale.com/kb/1065/macos-variants/&quot;&gt;macOS&lt;/a&gt;, and to varying degrees on FreeBSD and OpenBSD. The Tailscale iOS and Android apps use this repo&#39;s code, but this repo doesn&#39;t contain the mobile GUI code.&lt;/p&gt; 
&lt;p&gt;Other &lt;a href=&quot;https://github.com/orgs/tailscale/repositories&quot;&gt;Tailscale repos&lt;/a&gt; of note:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;the Android app is at &lt;a href=&quot;https://github.com/tailscale/tailscale-android&quot;&gt;https://github.com/tailscale/tailscale-android&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;the Synology package is at &lt;a href=&quot;https://github.com/tailscale/tailscale-synology&quot;&gt;https://github.com/tailscale/tailscale-synology&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;the QNAP package is at &lt;a href=&quot;https://github.com/tailscale/tailscale-qpkg&quot;&gt;https://github.com/tailscale/tailscale-qpkg&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;the Chocolatey packaging is at &lt;a href=&quot;https://github.com/tailscale/tailscale-chocolatey&quot;&gt;https://github.com/tailscale/tailscale-chocolatey&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For background on which parts of Tailscale are open source and why, see &lt;a href=&quot;https://tailscale.com/opensource/&quot;&gt;https://tailscale.com/opensource/&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Using&lt;/h2&gt; 
&lt;p&gt;We serve packages for a variety of distros and platforms at &lt;a href=&quot;https://pkgs.tailscale.com/&quot;&gt;https://pkgs.tailscale.com&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Other clients&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://tailscale.com/download&quot;&gt;macOS, iOS, and Windows clients&lt;/a&gt; use the code in this repository but additionally include small GUI wrappers. The GUI wrappers on non-open source platforms are themselves not open source.&lt;/p&gt; 
&lt;h2&gt;Building&lt;/h2&gt; 
&lt;p&gt;We always require the latest Go release, currently Go 1.26. (While we build releases with our &lt;a href=&quot;https://github.com/tailscale/go/&quot;&gt;Go fork&lt;/a&gt;, its use is not required.)&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;go install tailscale.com/cmd/tailscale{,d}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you&#39;re packaging Tailscale for distribution, use &lt;code&gt;build_dist.sh&lt;/code&gt; instead, to burn commit IDs and version info into the binaries:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;./build_dist.sh tailscale.com/cmd/tailscale
./build_dist.sh tailscale.com/cmd/tailscaled
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If your distro has conventions that preclude the use of &lt;code&gt;build_dist.sh&lt;/code&gt;, please do the equivalent of what it does in your distro&#39;s way, so that bug reports contain useful version information.&lt;/p&gt; 
&lt;h2&gt;Bugs&lt;/h2&gt; 
&lt;p&gt;Please file any issues about this code or the hosted service on &lt;a href=&quot;https://github.com/tailscale/tailscale/issues&quot;&gt;the issue tracker&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;PRs welcome! But please file bugs. Commit messages should &lt;a href=&quot;https://docs.github.com/en/github/writing-on-github/autolinked-references-and-urls&quot;&gt;reference bugs&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;We require &lt;a href=&quot;https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin&quot;&gt;Developer Certificate of Origin&lt;/a&gt; &lt;code&gt;Signed-off-by&lt;/code&gt; lines in commits.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/tailscale/tailscale/main/docs/commit-messages.md&quot;&gt;commit-messages.md&lt;/a&gt; (or skim &lt;code&gt;git log&lt;/code&gt;) for our commit message style.&lt;/p&gt; 
&lt;h2&gt;About Us&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://tailscale.com/&quot;&gt;Tailscale&lt;/a&gt; is primarily developed by the people at &lt;a href=&quot;https://github.com/orgs/tailscale/people&quot;&gt;https://github.com/orgs/tailscale/people&lt;/a&gt;. For other contributors, see:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tailscale/tailscale/graphs/contributors&quot;&gt;https://github.com/tailscale/tailscale/graphs/contributors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tailscale/tailscale-android/graphs/contributors&quot;&gt;https://github.com/tailscale/tailscale-android/graphs/contributors&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Legal&lt;/h2&gt; 
&lt;p&gt;WireGuard is a registered trademark of Jason A. Donenfeld.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>chenyme/grok2api</title>
      <link>https://github.com/chenyme/grok2api</link>
      <description>&lt;p&gt;Multi-account API gateway for Grok Build, Grok Web, and Grok Console&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img alt=&quot;Grok2API&quot; src=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/public/grok2api.png&quot; width=&quot;720&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;A multi-account API gateway for Grok Build, Grok Web, and Grok Console&lt;/strong&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; English | &lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/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://raw.githubusercontent.com/chenyme/grok2api/main/backend/go.mod&quot;&gt;&lt;img alt=&quot;Go&quot; src=&quot;https://img.shields.io/badge/Go-1.26-00ADD8?logo=go&amp;amp;logoColor=white&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/package.json&quot;&gt;&lt;img alt=&quot;React&quot; src=&quot;https://img.shields.io/badge/React-19-61DAFB?logo=react&amp;amp;logoColor=111827&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chenyme/grok2api/pkgs/container/grok2api&quot;&gt;&lt;img alt=&quot;Docker&quot; src=&quot;https://img.shields.io/badge/Docker-amd64%20%7C%20arm64-2496ED?logo=docker&amp;amp;logoColor=white&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/19868?utm_source=repository-badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=badge-repository-19868&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/19868&quot; alt=&quot;chenyme%2Fgrok2api | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;Check out &lt;a href=&quot;https://github.com/DEEIX-AI/DEEIX-Chat&quot;&gt;DEEIX-AI / DEEIX-Chat&lt;/a&gt;, a lightweight, integrated AI platform for model routing, chat, files, tools, billing, identity, and operations.&lt;/p&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;This project is for technical research and learning purposes only. Please comply with Grok&#39;s official terms of use and local laws when using it; otherwise, you will be solely responsible for all consequences!&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;a href=&quot;mailto:chenyme03@gmail.com&quot;&gt;Want to sponsor this project?&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;200&quot; align=&quot;center&quot; valign=&quot;middle&quot;&gt;&lt;a href=&quot;https://www.krill-ai.com/register?invite=KJ2VGIRVAE&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Krill-ai-org/krill-ai-static/refs/heads/main/krill-logo/Eng/250x150.png&quot; alt=&quot;Krill AI&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td valign=&quot;middle&quot;&gt;Krill AI provides fast, stable API access to GPT, Claude, Gemini, and leading Chinese models, with enterprise customization, invoicing, 7×16 support, and optimized WebSocket connections for faster first-token latency. Register through the &lt;a href=&quot;https://www.krill-ai.com/register?invite=KJ2VGIRVAE&quot;&gt;exclusive link&lt;/a&gt; and use code “grok2api” for 23% off your first Codex package.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;200&quot; align=&quot;center&quot; valign=&quot;middle&quot;&gt;&lt;a href=&quot;https://github.com/DEEIX-AI/DEEIX-Chat&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/public/sponner/deeix-chat_deeix-ai.png&quot; alt=&quot;DEEIX AI / DEEIX Chat&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td valign=&quot;middle&quot;&gt;DEEIX-Chat is an open-source, self-hostable AI Chat platform for individuals, teams, and enterprises that need stable, long-term, unified access to multiple models. It brings models, conversations, files, tool calling, and administration together in one deployable and extensible system. Click &lt;a href=&quot;https://github.com/DEEIX-AI/DEEIX-Chat&quot;&gt;here&lt;/a&gt; to start deploying.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;200&quot; align=&quot;center&quot; valign=&quot;middle&quot;&gt;&lt;a href=&quot;https://www.right.codes/register&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/public/sponner/rightcode.jpg&quot; alt=&quot;RightCode&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td valign=&quot;middle&quot;&gt;Right Code is an enterprise-grade AI Agent distribution platform that primarily provides stable access services for Claude Code, Codex, Gemini, and other models. It supports invoicing and dedicated one-to-one assistance for enterprises and teams. Thanks to Right Code for providing token support. Click &lt;a href=&quot;https://www.right.codes/register&quot;&gt;here&lt;/a&gt; to register and get started.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;200&quot; align=&quot;center&quot; valign=&quot;middle&quot;&gt;&lt;a href=&quot;https://api.fenno.ai/s/xCBS&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/public/sponner/fenno-ai.jpg&quot; alt=&quot;FennoAI&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td valign=&quot;middle&quot;&gt;FennoAI provides enterprise-grade OpenAI/Anthropic-compatible APIs for Codex, Claude Code, and OpenCode, processing hundreds of billions of tokens daily with global business settlement and invoicing. Through the Grok2API &lt;a href=&quot;https://api.fenno.ai/s/xCBS&quot;&gt;exclusive offer&lt;/a&gt;, USD 1.99 unlocks USD 50 in Coding Plan credits, plus referral commissions up to 20%.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;200&quot; align=&quot;center&quot; valign=&quot;middle&quot;&gt;&lt;a href=&quot;https://s.qiniu.com/RNNZFf&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/public/sponner/qiniu.jpg&quot; alt=&quot;Qiniu Cloud AI&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td valign=&quot;middle&quot;&gt;Qiniu Cloud AI, Qiniu Cloud’s (02567.HK) enterprise MaaS platform, offers protocol-compatible access to 150+ global models for text, image, audio, video, and files, serving 1.69+ million users. Grok2API registrations through the &lt;a href=&quot;https://s.qiniu.com/RNNZFf&quot;&gt;exclusive link&lt;/a&gt; receive 12 million free enterprise tokens or 3 million developer tokens.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;br /&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Grok2API is a Go gateway with a built-in React admin console. It manages independent Grok Build, Grok Web, and Grok Console account pools and exposes unified OpenAI- and Anthropic-compatible APIs.&lt;/p&gt; 
&lt;h3&gt;Architecture&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
    %% Color definitions
    classDef access fill:#e1f5fe,stroke:#01579b
    classDef core fill:#fff3e0,stroke:#e65100
    classDef providers fill:#f3e5f5,stroke:#4a148c
    classDef infra fill:#e8f5e9,stroke:#1b5e20
    classDef upstream fill:#fce4ec,stroke:#880e4f

    subgraph Access[&quot;Access Domain&quot;]
        direction LR
        Clients[&quot;API Clients&quot;]
        Admin[&quot;React Admin&quot;]
    end

    subgraph Core[&quot;Gateway Core Domain&quot;]
        direction LR
        Management[&quot;Management Services&amp;lt;br/&amp;gt;Accounts · Models · Keys · Settings&quot;]
        Sync[&quot;Account Sync&amp;lt;br/&amp;gt;Credentials · Quota · Models&quot;]
        Gateway[&quot;Gateway Service&amp;lt;br/&amp;gt;Protocols · Routing · Selection · Retry&quot;]
        Audit[&quot;Audit Service&amp;lt;br/&amp;gt;Usage · Client Billing&quot;]
        Management --&amp;gt; Sync
        Gateway -.-&amp;gt; Audit
    end

    subgraph Providers[&quot;Provider Channel Domain&quot;]
        direction LR
        Registry[&quot;Provider Registry&quot;]
        Build[&quot;Grok Build&amp;lt;br/&amp;gt;OAuth · Dynamic Models · Billing&quot;]
        Web[&quot;Grok Web&amp;lt;br/&amp;gt;SSO · Remote Quota · Media&quot;]
        Console[&quot;Grok Console&amp;lt;br/&amp;gt;SSO · Local Window · Stateless&quot;]
        Registry --&amp;gt; Build
        Registry --&amp;gt; Web
        Registry --&amp;gt; Console
    end

    subgraph Infra[&quot;Shared Infrastructure Domain&quot;]
        direction LR
        Egress[&quot;Egress Manager&amp;lt;br/&amp;gt;Scopes · Proxy Pool · Fallback · Clearance&quot;]
        Database[(&quot;SQLite / PostgreSQL&quot;)]
        Runtime[(&quot;Memory / Redis&quot;)]
    end

    Upstream[&quot;🌐 Grok Upstream&quot;]

    %% Cross-domain calls
    Clients --&amp;gt; Gateway
    Admin --&amp;gt; Management
    Gateway --&amp;gt; Registry
    Sync --&amp;gt; Registry
    Build --&amp;gt;|grok_build| Egress
    Web --&amp;gt;|grok_web / asset| Egress
    Console --&amp;gt;|grok_console| Egress
    Egress --&amp;gt; Upstream
    Management --&amp;gt; Database
    Audit --&amp;gt; Database
    Gateway &amp;lt;--&amp;gt; Runtime

    %% Application styles
    class Clients,Admin access
    class Management,Sync,Gateway,Audit core
    class Registry,Build,Web,Console providers
    class Egress,Database,Runtime infra
    class Upstream upstream
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The Gateway routes requests through the Provider Registry. Account Sync refreshes credentials, quota, and models. Each Provider keeps independent account state and uses an isolated egress scope; usage, audits, and client billing are finalized after the request.&lt;/p&gt; 
&lt;h3&gt;Core capabilities&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Area&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Capabilities&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;APIs&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Responses, Chat Completions, Anthropic Messages, Images, and asynchronous Videos&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Clients&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Codex, Claude Code, OpenAI-compatible SDKs, and Anthropic-compatible SDKs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Accounts&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Bulk import/export, quota sync, credential renewal, conversion, tools, and cleanup&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Routing&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Model discovery, Provider pinning, sticky sessions, quota/concurrency guards, and bounded failover&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Sessions&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Stored responses, compact, prompt-cache affinity, and optional reasoning replay&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Media&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image generation/editing, video jobs, local archiving, and URL/Base64/SSE output&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Egress&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;HTTP/SOCKS/Resin and Trojan/VLESS/Shadowsocks/VMess tunnels, subscriptions, probes, proxy pools, allocation, fallback, and FlareSolverr&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Operations&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Dashboard, model routes, client keys, audits, runtime settings, and media libraries&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Provider boundaries&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Provider&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Authentication&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Models&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Main capabilities&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Grok Build&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;OAuth / Device OAuth&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Discovered per account&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Responses, Chat, Messages, compact, stored responses, paid-account video&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Grok Web&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SSO&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Built-in, filtered by tier&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Responses, Chat, Messages, stored responses, images, image editing, video&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Grok Console&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SSO&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Built-in&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Stateless Responses, Chat, Messages, images, image editing, video, TTS, STT, Realtime&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Each Provider keeps its own credentials, quota, health, cooldown, concurrency, and model capabilities. Account retries stay within one route; when one public model ID intentionally aggregates multiple routes, the gateway may select another schedulable route without mixing Provider state.&lt;/p&gt; 
&lt;h2&gt;Quick start&lt;/h2&gt; 
&lt;p&gt;Official images support &lt;code&gt;linux/amd64&lt;/code&gt; and &lt;code&gt;linux/arm64&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/chenyme/grok2api.git
cd grok2api
cp config.example.yaml config.yaml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Generate secrets and place them in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;openssl rand -hex 32
openssl rand -base64 32
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;secrets:
  jwtSecret: &quot;replace-with-the-generated-hex-value&quot;
  credentialEncryptionKey: &quot;replace-with-the-generated-base64-key&quot;

bootstrapAdmin:
  username: &quot;admin&quot;
  password: &quot;replace-with-a-strong-password&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Start the service:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose pull
docker compose up -d
docker compose logs -f grok2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;. The image already includes the frontend; SQLite data and local media are stored in the Compose volume.&lt;/p&gt; 
&lt;h3&gt;Run from source&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp config.example.yaml config.yaml
make run
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For frontend development:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd frontend
pnpm install
pnpm dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Set up the gateway&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Sign in with the bootstrap administrator.&lt;/li&gt; 
 &lt;li&gt;Connect a Build, Web, or Console account.&lt;/li&gt; 
 &lt;li&gt;Wait for its quota and model capabilities to sync.&lt;/li&gt; 
 &lt;li&gt;Review the public routes under &lt;strong&gt;Model Routes&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Create a client key under &lt;strong&gt;Client Keys&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Call a &lt;code&gt;/v1/*&lt;/code&gt; endpoint with that key.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;After first sign-in, change the administrator password and remove &lt;code&gt;bootstrapAdmin&lt;/code&gt; from the configuration. Never rotate &lt;code&gt;credentialEncryptionKey&lt;/code&gt; after credentials have been stored.&lt;/p&gt; 
&lt;h3&gt;Account operations&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Provider&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Connect or import&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Export&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Build&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Device OAuth, JSON/JSONL&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Re-importable account file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Web&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Pasted/TXT SSO, JSON/JSONL&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Re-importable account file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Console&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Pasted/TXT SSO, JSON/JSONL&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Re-importable account file&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Imports accept UTF-8 BOM. Bulk quota sync, Build credential renewal, Web→Build/Console conversion, account tools, and cleanup report live progress.&lt;/p&gt; 
&lt;p&gt;Web account tools can accept the terms, set a random birthday corresponding to an age of 20–40, and enable NSFW. Completed steps are recorded and skipped on later runs.&lt;/p&gt; 
&lt;p&gt;Automatic deletion of old &lt;code&gt;reauthRequired&lt;/code&gt; accounts is available but disabled by default. Active inference leases and video jobs are protected.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;To migrate from the Python version, export Grok Web SSO tokens as TXT and import them under &lt;strong&gt;Grok Web&lt;/strong&gt;. Old pool metadata and databases are not compatible.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Models and routing&lt;/h2&gt; 
&lt;p&gt;Build models are discovered from each account&#39;s actual capabilities. Web and Console use built-in catalogs. The &lt;strong&gt;Model Routes&lt;/strong&gt; page shows Provider-qualified routes, endpoint capabilities, and supporting-account counts; clients should treat the currently serviceable results from &lt;code&gt;GET /v1/models&lt;/code&gt; as authoritative.&lt;/p&gt; 
&lt;h3&gt;Grok Build&lt;/h3&gt; 
&lt;p&gt;Build does not use one global static model list. Account synchronization reads the upstream &lt;code&gt;/models&lt;/code&gt; endpoint, and different accounts, subscription tiers, or staged rollouts may expose different models. Routing retains these per-account capabilities instead of replacing the global catalog with one account&#39;s response.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Model&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Type&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Availability&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Gateway surfaces&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation models returned by upstream &lt;code&gt;/models&lt;/code&gt; (for example, &lt;code&gt;grok-4.5&lt;/code&gt;)&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Returned by the selected account&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages, compact, stored responses&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-composer-2.5-fast&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Grok Build OAuth accounts&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages; supplemented from the OAuth session contract when a sparse upstream catalog omits it&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-video-1.5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Video&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Super/paid Build accounts&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Videos; not assigned to Free or unknown-entitlement accounts&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Conversation requests are translated to the Build Responses protocol while preserving the tool, reasoning, multi-turn, and prompt-cache compatibility required by Codex and Claude Code. Build currently exposes no image generation or image editing routes.&lt;/p&gt; 
&lt;h3&gt;Grok Web&lt;/h3&gt; 
&lt;p&gt;Web uses a built-in catalog filtered by account tier; higher tiers inherit lower-tier models.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Model&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Type&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Minimum tier&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Gateway surfaces&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-chat-fast&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Basic&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-chat-auto&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Super&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-chat-expert&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Super&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-chat-heavy&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Heavy&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-image-lite&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Basic&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Images Generations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-image-quality-lite&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Basic&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Images Generations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-image-edit&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image Edit&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Super&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Images Edits&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-video&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Video&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Super&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Videos&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Grok Console&lt;/h3&gt; 
&lt;p&gt;Console uses the catalog built into the current release. Conversation forwarding is stateless, while image, video, and voice use the standard xAI resource APIs.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Model&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Type&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Gateway surfaces&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-4.20-0309-non-reasoning&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-4.20-0309-reasoning&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages; the model reasons but the upstream rejects configurable &lt;code&gt;reasoningEffort&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-4.20-multi-agent-0309&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-4.5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-4.3&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-build-0.1&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Conversation&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions, Responses, Messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-image&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image, Image Edit&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Images Generations, Images Edits&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-image-quality&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image, Image Edit&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Images Generations, Images Edits&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-image-2.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Image, Image Edit&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Images Generations, Images Edits&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-video&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Video&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Videos&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-imagine-video-1.5&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Video&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Video generation, including Free Console accounts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-voice-latest&lt;/code&gt;, &lt;code&gt;grok-voice-think-fast-2.0&lt;/code&gt;, &lt;code&gt;grok-voice-think-fast-1.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Voice&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;TTS and Realtime WebSocket proxy&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;grok-stt&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Voice&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;STT and OpenAI-compatible audio transcriptions&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Generation and editing capabilities for the same Console image model are grouped into one logical model row; no separate &lt;code&gt;-edit&lt;/code&gt; model copy is required.&lt;/p&gt; 
&lt;p&gt;Public names normally omit the Provider. Internally, routes use &lt;code&gt;Build/&lt;/code&gt;, &lt;code&gt;Web/&lt;/code&gt;, or &lt;code&gt;Console/&lt;/code&gt;; qualified names can pin a request to one source.&lt;/p&gt; 
&lt;p&gt;Web can be weakly linked one-to-one with matching Build and Console accounts. Links share only an anonymous egress identity and provenance display. They never merge credentials, quota, health, cooldown, concurrency, capabilities, or billing.&lt;/p&gt; 
&lt;h3&gt;Codex, Claude Code, and prompt caching&lt;/h3&gt; 
&lt;p&gt;Responses and Messages support streaming, tools, reasoning, multi-turn sessions, and compaction. Stable client session signals are preserved for Grok Build prompt-cache affinity. Cache hits still require a compatible upstream account and an unchanged prompt prefix.&lt;/p&gt; 
&lt;p&gt;Responses and Chat Completions report OpenAI-style total input. Messages reports Anthropic-style uncached input and cache reads separately. Audits retain total and cached input for billing reconciliation.&lt;/p&gt; 
&lt;h2&gt;API&lt;/h2&gt; 
&lt;p&gt;Inference endpoints use a client key:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-http&quot;&gt;Authorization: Bearer g2a_xxx_xxx
&lt;/code&gt;&lt;/pre&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Method&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Path&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/healthz&lt;/code&gt;, &lt;code&gt;/readyz&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Liveness and readiness&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/models&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Serviceable models&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/responses&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Responses JSON/SSE&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/responses/compact&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Compact a supported Response session&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/responses/{id}&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Read or delete a stored response&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/chat/completions&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Chat Completions JSON/SSE&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/messages&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Anthropic Messages JSON/SSE&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/images/generations&lt;/code&gt;, &lt;code&gt;/v1/images/edits&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Generate or edit images&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;GET&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/videos/*&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Create and inspect video jobs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/tts&lt;/code&gt;, &lt;code&gt;/v1/audio/speech&lt;/code&gt;, &lt;code&gt;/v1/audio/tasks&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Synthesize speech&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/stt&lt;/code&gt;, &lt;code&gt;/v1/audio/transcriptions&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Transcribe audio&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/stt&lt;/code&gt;, &lt;code&gt;/v1/realtime&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Proxy voice WebSocket sessions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;/v1/media/images/{asset_id}&lt;/code&gt;, &lt;code&gt;/v1/media/videos/{asset_id}&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Read archived media&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Stored responses and compact depend on the selected Provider. The signed-in admin console provides live examples at &lt;code&gt;/docs&lt;/code&gt;; Swagger is available only when &lt;code&gt;server.swaggerEnabled: true&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;/v1/audio/transcriptions&lt;/code&gt; supports &lt;code&gt;json&lt;/code&gt; (default), &lt;code&gt;verbose_json&lt;/code&gt;, and &lt;code&gt;text&lt;/code&gt;. Video edit/extension routes must resolve to Console &lt;code&gt;grok-imagine-video&lt;/code&gt;; custom public model names remain supported. Monetary billing is applied only when the gateway can reliably measure the official pricing unit: TTS is reserved and settled from its input character count, while REST and streaming STT are settled from the actual audio duration returned by a successful response. Because STT duration is known only after completion, concurrent requests may briefly take a billing-limited key beyond its spend limit. Realtime, video edits/extensions, and custom routes without a recognized official price are currently audited as unpriced; they remain callable and do not consume the spend limit.&lt;/p&gt; 
&lt;p&gt;Client keys support model allowlists and optional RPM, concurrency, spend, and expiry limits.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl http://127.0.0.1:8000/v1/responses \
  -H &quot;Authorization: Bearer g2a_xxx_xxx&quot; \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{
    &quot;model&quot;: &quot;your-model&quot;,
    &quot;input&quot;: &quot;Explain quantum tunneling in three sentences.&quot;,
    &quot;stream&quot;: true
  }&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Egress and Cloudflare&lt;/h2&gt; 
&lt;p&gt;Egress nodes are scoped to Build, Web, Console, or Web assets. The admin console supports:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;HTTP, HTTPS, SOCKS4/4A, SOCKS5/5H, Resin, Trojan, VLESS, Shadowsocks, and VMess&lt;/li&gt; 
 &lt;li&gt;TCP, WebSocket, and TLS tunnel transports; unsupported variants are rejected during import&lt;/li&gt; 
 &lt;li&gt;Subscription and text/Base64 import&lt;/li&gt; 
 &lt;li&gt;Batch probes, filtering, deletion, assignment, and balancing&lt;/li&gt; 
 &lt;li&gt;Fallback per scope: none, direct, or a fixed node&lt;/li&gt; 
 &lt;li&gt;Proxy-pool mode without global cooldown after one connection failure&lt;/li&gt; 
 &lt;li&gt;Immediate recovery probes after fixed-proxy transport failures, with per-node coalescing and bounded waiting for fast retry&lt;/li&gt; 
 &lt;li&gt;Optional &lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/tools/egress-quality-guard/README.md&quot;&gt;Egress Quality Guard&lt;/a&gt; for active per-node model probes, guarded quarantine, and recovery; enable it with the built-in &lt;code&gt;quality-guard&lt;/code&gt; Compose profile&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Hysteria and TUIC are not supported yet. FlareSolverr accepts only HTTP/SOCKS proxy URLs, so automatic clearance refresh cannot use a tunnel share URL directly.&lt;/p&gt; 
&lt;p&gt;To enable the guard, add a &lt;code&gt;qualityGuard&lt;/code&gt; section to &lt;code&gt;config.yaml&lt;/code&gt;, then start the profile. The main service creates and reuses a non-exportable system probe identity automatically:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;qualityGuard:
  enabled: true
  model: &quot;grok-4.5&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose --profile quality-guard up -d --build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Existing preview deployments that still contain &lt;code&gt;clientKeyID&lt;/code&gt; can upgrade directly. The field is accepted for compatibility but ignored and can be removed; any manually created probe key is intentionally left untouched.&lt;/p&gt; 
&lt;p&gt;After changing this configuration, run &lt;code&gt;docker compose --profile quality-guard restart grok2api egress-quality-guard&lt;/code&gt; to reload the base settings; policy edits made in the admin page still hot-reload.&lt;/p&gt; 
&lt;p&gt;The normal &lt;code&gt;docker compose up -d&lt;/code&gt; command does not start the guard or generate probe traffic. The sidecar receives a narrowly scoped internal credential from the main service and never stores or uses the administrator password. See the linked guide before enabling automatic quarantine.&lt;/p&gt; 
&lt;p&gt;Resin usernames can contain &lt;code&gt;{account}&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;socks5h://Default.{account}:RESIN_PROXY_TOKEN@resin:2260
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The placeholder becomes a stable anonymous identity. Linked Web, Build, and Console accounts can share it; raw tokens and email addresses are not used.&lt;/p&gt; 
&lt;p&gt;For managed Web/Console Cloudflare Clearance:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose --profile flaresolverr up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then use &lt;code&gt;http://flaresolverr:8191&lt;/code&gt; under &lt;strong&gt;Runtime Settings → Media &amp;amp; Network → Clearance&lt;/strong&gt; and select one of the managed modes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;FlareSolverr&lt;/code&gt; proactively refreshes stale fixed-egress Clearance on the configured schedule.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;On demand&lt;/code&gt; keeps the last successful Clearance regardless of age and solves again only after an upstream rejection explicitly invalidates it. Scheduled refresh does not launch a browser in this mode.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;code&gt;Manual&lt;/code&gt; never invokes FlareSolverr. The on-demand mode can make the first request without a managed Clearance; if Cloudflare rejects it, the next lease performs one deduplicated solve.&lt;/p&gt; 
&lt;p&gt;The egress layer retries only connection failures known to occur before request submission. It does not replay submitted generation requests, authentication failures, exhausted quotas, or upstream rate limits.&lt;/p&gt; 
&lt;p&gt;When a fixed proxy enters cooldown after a transport failure, grok2api starts an independent connectivity probe immediately. Concurrent failures share one probe. A later request bound to that node waits for at most five seconds, reloads persisted node state after a healthy probe, and continues without waiting for the full cooldown. An unhealthy probe preserves the cooldown. Proxy-pool leases use fresh tunnels, so one rotating exit failure never cools the whole pool. See &lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/backend/internal/infra/egress/FAILURE_RETRY.md&quot;&gt;Immediate egress failure probe and bounded retry&lt;/a&gt; for the design and safety invariants.&lt;/p&gt; 
&lt;h2&gt;Configuration and deployment&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;config.yaml&lt;/code&gt; contains startup settings; Provider and operational settings are managed in the admin console and hot-reload unless marked otherwise.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Deployment&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Database&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Runtime store&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Media&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Single instance&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SQLite&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Memory&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Local directory&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Multiple instances&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;PostgreSQL&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Redis&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Shared read/write directory&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Multi-instance deployments require a unique &lt;code&gt;deployment.instanceID&lt;/code&gt; per replica, one shared &lt;code&gt;clusterID&lt;/code&gt;, and &lt;code&gt;sharedMedia: true&lt;/code&gt; only after the media directory is shared correctly.&lt;/p&gt; 
&lt;p&gt;PostgreSQL credentials can be injected without storing them in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GROK2API_DATABASE_URL=&#39;postgresql://user:password@host:5432/grok2api?sslmode=require&#39; docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;A non-empty &lt;code&gt;GROK2API_DATABASE_URL&lt;/code&gt; overrides &lt;code&gt;database.postgres.dsn&lt;/code&gt; and automatically selects the &lt;code&gt;postgres&lt;/code&gt; driver. An empty value is ignored. Supported URL schemes are &lt;code&gt;postgres://&lt;/code&gt; and &lt;code&gt;postgresql://&lt;/code&gt;; SQLAlchemy&#39;s &lt;code&gt;postgresql+asyncpg://&lt;/code&gt; form is rejected with a migration hint. The application does not implicitly read the generic &lt;code&gt;DATABASE_URL&lt;/code&gt;; platforms that provide it can map it explicitly with &lt;code&gt;GROK2API_DATABASE_URL: &quot;${DATABASE_URL}&quot;&lt;/code&gt;. Database configuration precedence is built-in defaults, &lt;code&gt;config.yaml&lt;/code&gt;, then &lt;code&gt;GROK2API_DATABASE_URL&lt;/code&gt;. The current CLI has no database override.&lt;/p&gt; 
&lt;p&gt;Important optional settings:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;audit.ledgerMode&lt;/code&gt;: &lt;code&gt;observe&lt;/code&gt; reports ledger faults; &lt;code&gt;enforce&lt;/code&gt; can pause new inference to protect billing integrity.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;routing.accountIsolatedConnections&lt;/code&gt;: partitions outbound TCP/HTTP pools by account for external L4 or connection-hash load balancers. It is off by default because it increases connections, TLS handshakes, memory, and file-descriptor usage.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;routing.segmentedSelectorEnabled&lt;/code&gt;: enabled by default for pools with at least 3,000 eligible accounts; bounds dynamic concurrency reads while retaining quota/tier priorities, sticky sessions, full-planner fallback, and atomic guards.&lt;/li&gt; 
 &lt;li&gt;Build response-header timeout and exact-match 403 invalidation rules are hot-reloadable.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Sync latest version&lt;/strong&gt; applies the validated Grok Build client version and User-Agent.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Production checklist&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use HTTPS and enable &lt;code&gt;auth.secureCookies&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Keep Swagger disabled on public deployments.&lt;/li&gt; 
 &lt;li&gt;Use strong, backed-up secrets; never commit credentials, cookies, exports, or databases.&lt;/li&gt; 
 &lt;li&gt;Back up &lt;code&gt;config.yaml&lt;/code&gt;, the database, and media storage.&lt;/li&gt; 
 &lt;li&gt;Use PostgreSQL, Redis, and shared media for multiple instances.&lt;/li&gt; 
 &lt;li&gt;Put a reverse proxy and access controls in front of public deployments.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd backend
go test ./...
go test -race ./...
go vet ./...
go build ./cmd/grok2api
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd frontend
pnpm install --frozen-lockfile
pnpm lint
pnpm build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Regenerate Swagger after changing public API annotations:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make swagger
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/README.zh-CN.md&quot;&gt;简体中文 README&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/backend/README.md&quot;&gt;Backend guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chenyme/grok2api/main/frontend/README.md&quot;&gt;Frontend guide&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>yorukot/superfile</title>
      <link>https://github.com/yorukot/superfile</link>
      <description>&lt;p&gt;Pretty fancy and modern terminal file manager&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h4&gt;superfile is supported by the community.&lt;/h4&gt; 
 &lt;a href=&quot;https://ko-fi.com/yorukot&quot;&gt; &lt;img alt=&quot;Donate to superfile on Ko-fi&quot; src=&quot;https://ko-fi.com/img/githubbutton_sm.svg?sanitize=true&quot; /&gt; &lt;/a&gt; 
 &lt;hr /&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;br /&gt; 
 &lt;picture&gt; 
  &lt;source width=&quot;300&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;website/src/assets/superfile-night.svg&quot; /&gt; 
  &lt;source width=&quot;300&quot; media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;website/src/assets/superfile-day.svg&quot; /&gt; 
  &lt;img alt=&quot;superfile LOGO&quot; src=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/website/src/assets/superfile-day.svg?sanitize=true&quot; /&gt; 
 &lt;/picture&gt; 
 &lt;br /&gt;
 &lt;br /&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/refs/heads/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;License MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/YYtJ23Du7B&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1338415256875307110?label=discord&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord Link&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/yorukot/superfile/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/yorukot/superfile.svg?style=flat-square&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/homebrew/installs/dy/superfile?label=Homebrew&quot; alt=&quot;Homebrew downloads&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/yorukot/superfile/total?label=GitHub%20downloads%20assets%2Freleases&quot; alt=&quot;GitHub downloads&quot; /&gt; &lt;a href=&quot;https://www.coderabbit.ai/&quot;&gt;&lt;img src=&quot;https://img.shields.io/coderabbit/prs/github/yorukot/superfile?utm_source=oss&amp;amp;utm_medium=github&amp;amp;utm_campaign=yorukot%2Fsuperfile&amp;amp;labelColor=171717&amp;amp;color=FF570A&amp;amp;&amp;amp;label=CodeRabbit+Reviews&quot; alt=&quot;CodeRabbit Pull Request Reviews&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/website/src/assets/demo.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Demo&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Perform common operations&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/asset/readme/demo.gif&quot; alt=&quot;&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Content&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#demo&quot;&gt;Demo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#content&quot;&gt;Content&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#installation&quot;&gt;Installation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#macos-and-linux&quot;&gt;macOS and Linux&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#windows&quot;&gt;Windows&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#powershell&quot;&gt;Powershell&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#winget&quot;&gt;Winget&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#scoop&quot;&gt;Scoop&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#more-installation-methods&quot;&gt;More installation methods&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#build&quot;&gt;Build&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#for-macoslinux&quot;&gt;For macOS/Linux&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#for-windows&quot;&gt;For Windows&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#start-superfile&quot;&gt;Start superfile&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#supported-systems&quot;&gt;Supported Systems&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#tutorial&quot;&gt;Tutorial&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#plugins&quot;&gt;Plugins&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#themes&quot;&gt;Themes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#hotkeys&quot;&gt;Hotkeys&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#notes&quot;&gt;Notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#uninstalling&quot;&gt;Uninstalling&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#macos-and-linux-1&quot;&gt;macOS and Linux&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#windows&quot;&gt;Windows&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#thanks&quot;&gt;Thanks&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#support&quot;&gt;Support&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#core-maintainer&quot;&gt;Core maintainer&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#contributors&quot;&gt;Contributors&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#powered-by&quot;&gt;Powered by&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#star-history&quot;&gt;Star History&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/#-%E3%81%A4-_-%E3%81%A4-please-share&quot;&gt;༼ つ ◕_◕ ༽つ Please share.&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;macOS and Linux&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash -c &quot;$(curl -sLo- https://superfile.dev/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to inspect the script, see : &lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/website/public/install.sh&quot;&gt;install.sh&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Windows&lt;/h3&gt; 
&lt;h4&gt;Powershell&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;powershell -ExecutionPolicy Bypass -Command &quot;Invoke-Expression ((New-Object System.Net.WebClient).DownloadString(&#39;https://superfile.dev/install.ps1&#39;))&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to inspect the script, see : &lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/website/public/install.ps1&quot;&gt;install.ps1&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;&lt;a href=&quot;https://winget.run/&quot;&gt;Winget&lt;/a&gt;&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;winget install --id yorukot.superfile
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;&lt;a href=&quot;https://scoop.sh/&quot;&gt;Scoop&lt;/a&gt;&lt;/h4&gt; 
&lt;pre&gt;&lt;code&gt;scoop install superfile
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;More installation methods&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://superfile.dev/getting-started/installation/&quot;&gt;Click me to check on how to install&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Build&lt;/h2&gt; 
&lt;p&gt;You can build the source code yourself by using these steps:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://go.dev/doc/install&quot;&gt;golang&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Build Steps&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Clone this repository using the following command:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;git clone https://github.com/yorukot/superfile.git --depth=1
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Enter the downloaded directory:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd superfile
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;For macOS/Linux&lt;/h3&gt; 
&lt;p&gt;Run the &lt;code&gt;build.sh&lt;/code&gt; file:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./build.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Add the binary file to your $PATH, e.g., in &lt;code&gt;/usr/local/bin&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo mv ./bin/spf /usr/local/bin
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;For Windows&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go build -o bin/spf.exe
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Edit System Environment Variables and add superfile repo&#39;s &lt;code&gt;bin&lt;/code&gt; directory to your PATH&lt;/p&gt; 
&lt;h2&gt;Start superfile&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;spf
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Supported Systems&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;[x] Linux&lt;/li&gt; 
 &lt;li&gt;[x] macOS&lt;/li&gt; 
 &lt;li&gt;[x] Windows (Not fully supported yet)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Tutorial&lt;/h2&gt; 
&lt;p&gt;After you install superfile, you can go &lt;a href=&quot;https://superfile.dev/getting-started/tutorial/&quot;&gt;here&lt;/a&gt; to briefly understand how to use superfile!&lt;/p&gt; 
&lt;h2&gt;Plugins&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://superfile.dev/list/plugin-list/&quot;&gt;Click me to the plugins wiki&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Themes&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://superfile.dev/configure/custom-theme/&quot;&gt;Click me to the theme wiki&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Hotkeys&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;If you are vim/nvim user please change your default hotkeys config to vim version!&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;a href=&quot;https://superfile.dev/configure/custom-hotkeys/&quot;&gt;&lt;strong&gt;Click me to see the hotkey wiki&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Notes&lt;/h2&gt; 
&lt;p&gt;We have an auto update functionality, that fetches superfile&#39;s latest released version from github (if last timestamp of last version check was less than 24 hours) and prints a prompt to user, if there is a newer version available.&lt;/p&gt; 
&lt;p&gt;You can turn this off, by setting &lt;code&gt;auto_check_update&lt;/code&gt; to false in superfile config. &lt;a href=&quot;https://superfile.dev/configure/superfile-config/&quot;&gt;&lt;strong&gt;Click me to see the config wiki&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://superfile.dev/troubleshooting/&quot;&gt;&lt;strong&gt;Click me to see common problem fix&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Uninstalling&lt;/h2&gt; 
&lt;h3&gt;macOS and Linux&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash -c &quot;$(curl -sLo- https://superfile.dev/uninstall.sh)&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to inspect the script, see : &lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/website/public/uninstall.sh&quot;&gt;uninstall.sh&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Windows&lt;/h3&gt; 
&lt;p&gt;To uninstall superfile on Windows, use this powershell script.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;powershell -ExecutionPolicy Bypass -Command &quot;Invoke-Expression ((New-Object System.Net.WebClient).DownloadString(&#39;https://superfile.dev/uninstall.ps1&#39;))&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;If you want to contribute please follow the &lt;a href=&quot;https://raw.githubusercontent.com/yorukot/superfile/main/CONTRIBUTING.md&quot;&gt;contribution guide&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://superfile.dev/changelog&quot;&gt;&lt;strong&gt;Click me to see changelog&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Thanks&lt;/h2&gt; 
&lt;h3&gt;Support&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;a Star on my GitHub repository would be nice 🌟&lt;/li&gt; 
 &lt;li&gt;You can buy a coffee for me 💖&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://ko-fi.com/G2G1JEGGC&quot;&gt;&lt;img src=&quot;https://ko-fi.com/img/githubbutton_sm.svg?sanitize=true&quot; alt=&quot;ko-fi&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Core maintainer&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;We welcome anyone who wants to become a core maintainer. Feel free to reach out!&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/yorukot&quot;&gt;@yorukot&lt;/a&gt;&lt;/strong&gt; - Original author and maintainer&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/lazysegtree&quot;&gt;@lazysegtree&lt;/a&gt;&lt;/strong&gt; - Core maintainer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Contributors&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Thanks to all the contributors for making this project even greater!&lt;/strong&gt;&lt;/p&gt; 
&lt;a href=&quot;https://github.com/yorukot/superfile/graphs/contributors&quot;&gt; &lt;img src=&quot;https://gthanks.yorukot.me/image?target=yorukot%2Fsuperfile&quot; /&gt; &lt;/a&gt; 
&lt;h3&gt;Powered by&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://jb.gg/OpenSource&quot;&gt;&lt;img alt=&quot;JetBrains logo&quot; align=&quot;right&quot; width=&quot;200&quot; src=&quot;https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg?sanitize=true&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Thanks to JetBrains team for providing open-source licenses to support the maintenance of superfile.&lt;/p&gt; 
&lt;h3&gt;Star History&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;THANKS FOR All OF YOUR STARS!&lt;/strong&gt; Your stars are my motivation to keep updating!&lt;/p&gt; 
&lt;a href=&quot;https://www.star-history.com/?repos=yorukot%2Fsuperfile&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=yorukot/superfile&amp;amp;type=date&amp;amp;theme=dark&amp;amp;legend=top-left&amp;amp;sealed_token=nEoMOYsfp1zwZ7rT-Fm6VR2yTa6cwW35VR0BwVxTuE8Dt17vRcRIQUFXeWdh6lZixlAl5e_fIVFs2Xe4cRdvAnexR5Q6JqlGVZK05Iu0mko8gYLjTdjq0g&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/chart?repos=yorukot/superfile&amp;amp;type=date&amp;amp;legend=top-left&amp;amp;sealed_token=nEoMOYsfp1zwZ7rT-Fm6VR2yTa6cwW35VR0BwVxTuE8Dt17vRcRIQUFXeWdh6lZixlAl5e_fIVFs2Xe4cRdvAnexR5Q6JqlGVZK05Iu0mko8gYLjTdjq0g&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/chart?repos=yorukot/superfile&amp;amp;type=date&amp;amp;legend=top-left&amp;amp;sealed_token=nEoMOYsfp1zwZ7rT-Fm6VR2yTa6cwW35VR0BwVxTuE8Dt17vRcRIQUFXeWdh6lZixlAl5e_fIVFs2Xe4cRdvAnexR5Q6JqlGVZK05Iu0mko8gYLjTdjq0g&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;༼ つ ◕_◕ ༽つ Please share.&lt;/h2&gt; 
&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>sundowndev/phoneinfoga</title>
      <link>https://github.com/sundowndev/phoneinfoga</link>
      <description>&lt;p&gt;Information gathering framework for phone numbers&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/docs/images/banner.png&quot; width=&quot;500&quot; alt=&quot;project logo&quot; /&gt; &lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://github.com/sundowndev/phoneinfoga/actions&quot;&gt; &lt;img src=&quot;https://github.com/sundowndev/phoneinfoga/workflows/Build/badge.svg?sanitize=true&quot; alt=&quot;build status&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://goreportcard.com/report/github.com/sundowndev/phoneinfoga/v2&quot;&gt; &lt;img src=&quot;https://goreportcard.com/badge/github.com/sundowndev/phoneinfoga/v2&quot; alt=&quot;go report&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://codeclimate.com/github/sundowndev/phoneinfoga/maintainability&quot;&gt; &lt;img src=&quot;https://api.codeclimate.com/v1/badges/3259feb1c68df1cd4f71/maintainability&quot; alt=&quot;code climate badge&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://coveralls.io/github/sundowndev/phoneinfoga&quot;&gt; &lt;img src=&quot;https://coveralls.io/repos/github/sundowndev/phoneinfoga/badge.svg?sanitize=true&quot; alt=&quot;Coverage Status&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://github.com/sundowndev/phoneinfoga/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/release/SundownDEV/phoneinfoga.svg?sanitize=true&quot; alt=&quot;Latest version&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://hub.docker.com/r/sundowndev/phoneinfoga&quot;&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/sundowndev/phoneinfoga.svg?sanitize=true&quot; alt=&quot;Docker pulls&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h4 align=&quot;center&quot;&gt;Information gathering framework for phone numbers&lt;/h4&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://sundowndev.github.io/phoneinfoga/&quot;&gt;Documentation&lt;/a&gt; • &lt;a href=&quot;https://petstore.swagger.io/?url=https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/web/docs/swagger.yaml&quot;&gt;API documentation&lt;/a&gt; • &lt;a href=&quot;https://medium.com/@SundownDEV/phone-number-scanning-osint-recon-tool-6ad8f0cac27b&quot;&gt;Related blog post&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;About&lt;/h2&gt; 
&lt;p&gt;PhoneInfoga is one of the most advanced tools to scan international phone numbers. It allows you to first gather basic information such as country, area, carrier and line type, then use various techniques to try to find the VoIP provider or identify the owner. It works with a collection of scanners that must be configured in order for the tool to be effective. PhoneInfoga doesn&#39;t automate everything, it&#39;s just there to help investigating on phone numbers.&lt;/p&gt; 
&lt;h2&gt;Current status&lt;/h2&gt; 
&lt;p&gt;This project is stable but unmaintained. Upcoming bugs won&#39;t be fixed and repository could be archived at any time.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check if phone number exists&lt;/li&gt; 
 &lt;li&gt;Gather basic information such as country, line type and carrier&lt;/li&gt; 
 &lt;li&gt;OSINT footprinting using external APIs, phone books &amp;amp; search engines&lt;/li&gt; 
 &lt;li&gt;Check for reputation reports, social media, disposable numbers and more&lt;/li&gt; 
 &lt;li&gt;Use the graphical user interface to run scans from the browser&lt;/li&gt; 
 &lt;li&gt;Programmatic usage with the &lt;a href=&quot;https://petstore.swagger.io/?url=https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/web/docs/swagger.yaml&quot;&gt;REST API&lt;/a&gt; and &lt;a href=&quot;https://pkg.go.dev/github.com/sundowndev/phoneinfoga/v2&quot;&gt;Go modules&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Anti-features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Does not claim to provide relevant or verified data, it&#39;s just a tool !&lt;/li&gt; 
 &lt;li&gt;Does not allow to &quot;track&quot; a phone or its owner in real time&lt;/li&gt; 
 &lt;li&gt;Does not allow to get the precise phone location&lt;/li&gt; 
 &lt;li&gt;Does not allow to hack a phone&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://app.fossa.com/projects/git%2Bgithub.com%2Fsundowndev%2FPhoneInfoga?ref=badge_shield&quot;&gt;&lt;img src=&quot;https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsundowndev%2FPhoneInfoga.svg?type=shield&quot; alt=&quot;FOSSA Status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;This tool is licensed under the GNU General Public License v3.0.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.flaticon.com/free-icon/fingerprint-search-symbol-of-secret-service-investigation_48838&quot;&gt;Icon&lt;/a&gt; made by &lt;a href=&quot;https://www.freepik.com/&quot; title=&quot;Freepik&quot;&gt;Freepik&lt;/a&gt; from &lt;a href=&quot;https://www.flaticon.com/&quot; title=&quot;Flaticon&quot;&gt;flaticon.com&lt;/a&gt; is licensed by &lt;a href=&quot;http://creativecommons.org/licenses/by/3.0/&quot; title=&quot;Creative Commons BY 3.0&quot; target=&quot;_blank&quot;&gt;CC 3.0 BY&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;Support me by signing up to DigitalOcean using my link ($200 free credits)&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.digitalocean.com/?refcode=31f5ef768eb3&amp;amp;utm_campaign=Referral_Invite&amp;amp;utm_medium=Referral_Program&amp;amp;utm_source=badge&quot;&gt;&lt;img src=&quot;https://web-platforms.sfo2.cdn.digitaloceanspaces.com/WWW/Badge%203.svg?sanitize=true&quot; alt=&quot;DigitalOcean Referral Badge&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://github.com/sundowndev/static/raw/main/sponsors.svg?v=c68eba9&quot; width=&quot;100%&quot; heigh=&quot;auto&quot; /&gt; 
&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>traefik/traefik</title>
      <link>https://github.com/traefik/traefik</link>
      <description>&lt;p&gt;The Cloud Native Application Proxy&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;docs/content/assets/img/traefik.logo-dark.png&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;docs/content/assets/img/traefik.logo.png&quot; /&gt; 
  &lt;img alt=&quot;Traefik&quot; title=&quot;Traefik&quot; src=&quot;https://raw.githubusercontent.com/traefik/traefik/master/docs/content/assets/img/traefik.logo.png&quot; /&gt; 
 &lt;/picture&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://doc.traefik.io/traefik&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-current-brightgreen.svg?sanitize=true&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/traefik/traefik/raw/master/LICENSE.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://community.traefik.io/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/style-register-green.svg?style=social&amp;amp;label=Discourse&quot; alt=&quot;Join the community support forum at https://community.traefik.io/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://twitter.com/intent/follow?screen_name=traefik&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/traefik.svg?style=social&quot; alt=&quot;Twitter&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Traefik (pronounced &lt;em&gt;traffic&lt;/em&gt;) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (&lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;, &lt;a href=&quot;https://docs.docker.com/engine/swarm/&quot;&gt;Swarm mode&lt;/a&gt;, &lt;a href=&quot;https://kubernetes.io&quot;&gt;Kubernetes&lt;/a&gt;, &lt;a href=&quot;https://www.consul.io/&quot;&gt;Consul&lt;/a&gt;, &lt;a href=&quot;https://coreos.com/etcd/&quot;&gt;Etcd&lt;/a&gt;, &lt;a href=&quot;https://rancher.com&quot;&gt;Rancher v2&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/ecs&quot;&gt;Amazon ECS&lt;/a&gt;, ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the &lt;em&gt;only&lt;/em&gt; configuration step you need.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;. &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#overview&quot;&gt;Overview&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#features&quot;&gt;Features&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#supported-backends&quot;&gt;Supported backends&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#quickstart&quot;&gt;Quickstart&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#web-ui&quot;&gt;Web UI&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#documentation&quot;&gt;Documentation&lt;/a&gt;&lt;/strong&gt; .&lt;/p&gt; 
&lt;p&gt;. &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#support&quot;&gt;Support&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#release-cycle&quot;&gt;Release cycle&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#maintainers&quot;&gt;Maintainers&lt;/a&gt;&lt;/strong&gt; . &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/#credits&quot;&gt;Credits&lt;/a&gt;&lt;/strong&gt; .&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;⚠️ When migrating to a new major version of Traefik, please refer to the &lt;a href=&quot;https://doc.traefik.io/traefik/migrate/v2-to-v3/&quot;&gt;migration guide&lt;/a&gt; to ensure a smooth transition and to be aware of any breaking changes.&lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Imagine that you have deployed a bunch of microservices with the help of an orchestrator (like Swarm or Kubernetes) or a service registry (like etcd or consul). Now you want users to access these microservices, and you need a reverse proxy.&lt;/p&gt; 
&lt;p&gt;Traditional reverse-proxies require that you configure &lt;em&gt;each&lt;/em&gt; route that will connect paths and subdomains to &lt;em&gt;each&lt;/em&gt; microservice. In an environment where you add, remove, kill, upgrade, or scale your services &lt;em&gt;many&lt;/em&gt; times a day, the task of keeping the routes up to date becomes tedious.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;This is when Traefik can help you!&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Traefik listens to your service registry/orchestrator API and instantly generates the routes so your microservices are connected to the outside world -- without further intervention from your part.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Run Traefik and let it do the work for you!&lt;/strong&gt; &lt;em&gt;(But if you&#39;d rather configure some of your routes manually, Traefik supports that too!)&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/traefik/traefik/master/docs/content/assets/img/traefik-architecture.png&quot; alt=&quot;Architecture&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Continuously updates its configuration (No restarts!)&lt;/li&gt; 
 &lt;li&gt;Supports multiple load balancing algorithms&lt;/li&gt; 
 &lt;li&gt;Provides HTTPS to your microservices by leveraging &lt;a href=&quot;https://letsencrypt.org&quot;&gt;Let&#39;s Encrypt&lt;/a&gt; (wildcard certificates support)&lt;/li&gt; 
 &lt;li&gt;Circuit breakers, retry&lt;/li&gt; 
 &lt;li&gt;See the magic through its clean web UI&lt;/li&gt; 
 &lt;li&gt;WebSocket, HTTP/2, gRPC ready&lt;/li&gt; 
 &lt;li&gt;Provides metrics (Rest, Prometheus, Datadog, Statsd, InfluxDB 2.X)&lt;/li&gt; 
 &lt;li&gt;Keeps access logs (JSON, CLF)&lt;/li&gt; 
 &lt;li&gt;Fast&lt;/li&gt; 
 &lt;li&gt;Exposes a Rest API&lt;/li&gt; 
 &lt;li&gt;Packaged as a single binary file (made with ❤️ with go) and available as an &lt;a href=&quot;https://hub.docker.com/r/_/traefik/&quot;&gt;official&lt;/a&gt; docker image&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported Backends&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/providers/docker/&quot;&gt;Docker&lt;/a&gt; / &lt;a href=&quot;https://doc.traefik.io/traefik/providers/docker/&quot;&gt;Swarm mode&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/providers/kubernetes-crd/&quot;&gt;Kubernetes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/providers/ecs/&quot;&gt;ECS&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/providers/file/&quot;&gt;File&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;p&gt;To get your hands on Traefik, you can use the &lt;a href=&quot;https://doc.traefik.io/traefik/getting-started/quick-start/&quot;&gt;5-Minute Quickstart&lt;/a&gt; in our documentation (you will need Docker).&lt;/p&gt; 
&lt;h2&gt;Web UI&lt;/h2&gt; 
&lt;p&gt;You can access the simple HTML frontend of Traefik.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/traefik/traefik/master/docs/content/assets/img/webui-dashboard.png&quot; alt=&quot;Web UI Providers&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;You can find the complete documentation of Traefik v3 at &lt;a href=&quot;https://doc.traefik.io/traefik/&quot;&gt;https://doc.traefik.io/traefik/&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;To get community support, you can:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;join the Traefik community forum: &lt;a href=&quot;https://community.traefik.io/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/style-register-green.svg?style=social&amp;amp;label=Discourse&quot; alt=&quot;Join the chat at https://community.traefik.io/&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you need commercial support, please contact &lt;a href=&quot;https://traefik.io&quot;&gt;Traefik.io&lt;/a&gt; by mail: &lt;a href=&quot;mailto:support@traefik.io&quot;&gt;mailto:support@traefik.io&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Grab the latest binary from the &lt;a href=&quot;https://github.com/traefik/traefik/releases&quot;&gt;releases&lt;/a&gt; page and run it with the &lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/traefik.sample.toml&quot;&gt;sample configuration file&lt;/a&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;./traefik --configFile=traefik.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Or use the official tiny Docker image and run it with the &lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/traefik.sample.toml&quot;&gt;sample configuration file&lt;/a&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;Or get the sources:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;git clone https://github.com/traefik/traefik
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Introductory Videos&lt;/h2&gt; 
&lt;p&gt;You can find high level and deep dive videos on &lt;a href=&quot;https://videos.traefik.io&quot;&gt;videos.traefik.io&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Maintainers&lt;/h2&gt; 
&lt;p&gt;We are strongly promoting a philosophy of openness and sharing, and firmly standing against the elitist closed approach. Being part of the core team should be accessible to anyone who is motivated and want to be part of that journey! This &lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/docs/content/contributing/maintainers-guidelines.md&quot;&gt;document&lt;/a&gt; describes how to be part of the &lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/docs/content/contributing/maintainers.md&quot;&gt;maintainers&#39; team&lt;/a&gt; as well as various responsibilities and guidelines for Traefik maintainers. You can also find more information on our process to review pull requests and manage issues &lt;a href=&quot;https://github.com/traefik/contributors-guide/raw/master/issue_triage.md&quot;&gt;in this document&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;If you&#39;d like to contribute to the project, refer to the &lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/CONTRIBUTING.md&quot;&gt;contributing documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Please note that this project is released with a &lt;a href=&quot;https://raw.githubusercontent.com/traefik/traefik/master/CODE_OF_CONDUCT.md&quot;&gt;Contributor Code of Conduct&lt;/a&gt;. By participating in this project, you agree to abide by its terms.&lt;/p&gt; 
&lt;h2&gt;Release Cycle&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;We usually release 3/4 new versions (e.g. 1.1.0, 1.2.0, 1.3.0) per year.&lt;/li&gt; 
 &lt;li&gt;Release Candidates are available before the release (e.g. 1.1.0-rc1, 1.1.0-rc2, 1.1.0-rc3, 1.1.0-rc4, before 1.1.0).&lt;/li&gt; 
 &lt;li&gt;Bug-fixes (e.g. 1.1.1, 1.1.2, 1.2.1, 1.2.3) are released as needed (no additional features are delivered in those versions, bug-fixes only).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Each version is supported until the next one is released (e.g. 1.1.x will be supported until 1.2.0 is out).&lt;/p&gt; 
&lt;p&gt;We use &lt;a href=&quot;https://semver.org/&quot;&gt;Semantic Versioning&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Mailing Lists&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;General announcements, new releases: mail at &lt;a href=&quot;mailto:news+subscribe@traefik.io&quot;&gt;news+subscribe@traefik.io&lt;/a&gt; or on &lt;a href=&quot;https://groups.google.com/a/traefik.io/forum/#!forum/news&quot;&gt;the online viewer&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Security announcements: mail at &lt;a href=&quot;mailto:security+subscribe@traefik.io&quot;&gt;security+subscribe@traefik.io&lt;/a&gt; or on &lt;a href=&quot;https://groups.google.com/a/traefik.io/forum/#!forum/security&quot;&gt;the online viewer&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;p&gt;Kudos to &lt;a href=&quot;https://www.instagram.com/pierroks/&quot;&gt;Peka&lt;/a&gt; for his awesome work on the gopher&#39;s logo!.&lt;/p&gt; 
&lt;p&gt;The gopher&#39;s logo of Traefik is licensed under the Creative Commons 3.0 Attributions license.&lt;/p&gt; 
&lt;p&gt;The gopher&#39;s logo of Traefik was inspired by the gopher stickers made by &lt;a href=&quot;https://twitter.com/tenntenn&quot;&gt;Takuya Ueda&lt;/a&gt;. The original Go gopher was designed by &lt;a href=&quot;https://reneefrench.blogspot.com/&quot;&gt;Renee French&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>caddyserver/caddy</title>
      <link>https://github.com/caddyserver/caddy</link>
      <description>&lt;p&gt;Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://caddyserver.com&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://github.com/user-attachments/assets/1d6be89c-df8a-438c-b01d-cef6bf56440a&quot; /&gt; 
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://github.com/user-attachments/assets/3a5b7419-6925-48f6-ae75-d231f4a4f0c2&quot; /&gt; 
   &lt;img src=&quot;https://github.com/user-attachments/assets/3a5b7419-6925-48f6-ae75-d231f4a4f0c2&quot; alt=&quot;Caddy&quot; width=&quot;550&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;br /&gt; &lt;/p&gt;
&lt;h3 align=&quot;center&quot;&gt;a &lt;a href=&quot;https://zerossl.com&quot;&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/55066419/208327323-2770dc16-ec09-43a0-9035-c5b872c2ad7f.svg?sanitize=true&quot; height=&quot;28&quot; style=&quot;vertical-align: -7.7px&quot; valign=&quot;middle&quot; /&gt;&lt;/a&gt; project&lt;/h3&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3 align=&quot;center&quot;&gt;Every site on HTTPS&lt;/h3&gt; 
&lt;p align=&quot;center&quot;&gt;Caddy is an extensible server platform that uses TLS by default.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/caddyserver/caddy/releases&quot;&gt;Releases&lt;/a&gt; · &lt;a href=&quot;https://caddyserver.com/docs/&quot;&gt;Documentation&lt;/a&gt; · &lt;a href=&quot;https://caddy.community&quot;&gt;Get Help&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/caddyserver/caddy/actions/workflows/ci.yml&quot;&gt;&lt;img src=&quot;https://github.com/caddyserver/caddy/actions/workflows/ci.yml/badge.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://www.bestpractices.dev/projects/7141&quot;&gt;&lt;img src=&quot;https://www.bestpractices.dev/projects/7141/badge&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://pkg.go.dev/github.com/caddyserver/caddy/v2&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/godoc-reference-%23007d9c.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://x.com/caddyserver&quot; title=&quot;@caddyserver on Twitter&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/caddyserver&quot; alt=&quot;@caddyserver on Twitter&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://caddy.community&quot; title=&quot;Caddy Forum&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/community-forum-ff69b4.svg?sanitize=true&quot; alt=&quot;Caddy Forum&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://sourcegraph.com/github.com/caddyserver/caddy?badge&quot; title=&quot;Caddy on Sourcegraph&quot;&gt;&lt;img src=&quot;https://sourcegraph.com/github.com/caddyserver/caddy/-/badge.svg?sanitize=true&quot; alt=&quot;Caddy on Sourcegraph&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://cloudsmith.io/~caddy/repos/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith&quot; alt=&quot;Cloudsmith&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;b&gt;Powered by&lt;/b&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/caddyserver/certmagic&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/55066419/206946718-740b6371-3df3-4d72-a822-47e4c48af999.png&quot; /&gt; 
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://user-images.githubusercontent.com/1128849/49704830-49d37200-fbd5-11e8-8385-767e0cd033c3.png&quot; /&gt; 
   &lt;img src=&quot;https://user-images.githubusercontent.com/1128849/49704830-49d37200-fbd5-11e8-8385-767e0cd033c3.png&quot; alt=&quot;CertMagic&quot; width=&quot;250&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;!-- Warp sponsorship requests this section --&gt; 
&lt;div align=&quot;center&quot; markdown=&quot;1&quot;&gt; 
 &lt;hr /&gt; 
 &lt;sup&gt;Special thanks to:&lt;/sup&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://go.warp.dev/caddy&quot;&gt; &lt;img alt=&quot;Warp sponsorship&quot; width=&quot;400&quot; src=&quot;https://github.com/user-attachments/assets/c8efffde-18c7-4af4-83ed-b1aba2dda394&quot; /&gt; &lt;/a&gt; 
 &lt;h3&gt;&lt;a href=&quot;https://go.warp.dev/caddy&quot;&gt;Warp, built for coding with multiple AI agents&lt;/a&gt;&lt;/h3&gt; 
 &lt;p&gt;&lt;a href=&quot;https://go.warp.dev/caddy&quot;&gt;Available for MacOS, Linux, &amp;amp; Windows&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Menu&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#install&quot;&gt;Install&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#build-from-source&quot;&gt;Build from source&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#for-development&quot;&gt;For development&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#with-version-information-andor-plugins&quot;&gt;With version information and/or plugins&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#quick-start&quot;&gt;Quick start&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#overview&quot;&gt;Overview&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#full-documentation&quot;&gt;Full documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#getting-help&quot;&gt;Getting help&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/caddyserver/caddy/master/#about&quot;&gt;About&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;a href=&quot;https://caddyserver.com/features&quot;&gt;Features&lt;/a&gt;&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Easy configuration&lt;/strong&gt; with the &lt;a href=&quot;https://caddyserver.com/docs/caddyfile&quot;&gt;Caddyfile&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Powerful configuration&lt;/strong&gt; with its &lt;a href=&quot;https://caddyserver.com/docs/json/&quot;&gt;native JSON config&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dynamic configuration&lt;/strong&gt; with the &lt;a href=&quot;https://caddyserver.com/docs/api&quot;&gt;JSON API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://caddyserver.com/docs/config-adapters&quot;&gt;&lt;strong&gt;Config adapters&lt;/strong&gt;&lt;/a&gt; if you don&#39;t like JSON&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Automatic HTTPS&lt;/strong&gt; by default 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://zerossl.com&quot;&gt;ZeroSSL&lt;/a&gt; and &lt;a href=&quot;https://letsencrypt.org&quot;&gt;Let&#39;s Encrypt&lt;/a&gt; for public names&lt;/li&gt; 
   &lt;li&gt;Fully-managed local CA for internal names &amp;amp; IPs&lt;/li&gt; 
   &lt;li&gt;Can coordinate with other Caddy instances in a cluster&lt;/li&gt; 
   &lt;li&gt;Multi-issuer fallback&lt;/li&gt; 
   &lt;li&gt;Encrypted ClientHello (ECH) support&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Stays up when other servers go down&lt;/strong&gt; due to TLS/OCSP/certificate-related issues&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Production-ready&lt;/strong&gt; after serving trillions of requests and managing millions of TLS certificates&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scales to hundreds of thousands of sites&lt;/strong&gt; as proven in production&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;HTTP/1.1, HTTP/2, and HTTP/3&lt;/strong&gt; all supported by default&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Highly extensible&lt;/strong&gt; &lt;a href=&quot;https://caddyserver.com/docs/architecture&quot;&gt;modular architecture&lt;/a&gt; lets Caddy do anything without bloat&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Runs anywhere&lt;/strong&gt; with &lt;strong&gt;no external dependencies&lt;/strong&gt; (not even libc)&lt;/li&gt; 
 &lt;li&gt;Written in Go, a language with higher &lt;strong&gt;memory safety guarantees&lt;/strong&gt; than other servers&lt;/li&gt; 
 &lt;li&gt;Actually &lt;strong&gt;fun to use&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;So much more to &lt;a href=&quot;https://caddyserver.com/features&quot;&gt;discover&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;The simplest, cross-platform way to get started is to download Caddy from &lt;a href=&quot;https://github.com/caddyserver/caddy/releases&quot;&gt;GitHub Releases&lt;/a&gt; and place the executable file in your PATH.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://caddyserver.com/docs/install&quot;&gt;our online documentation&lt;/a&gt; for other install instructions.&lt;/p&gt; 
&lt;h2&gt;Build from source&lt;/h2&gt; 
&lt;p&gt;Requirements:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://golang.org/dl/&quot;&gt;Go 1.25.0 or newer&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;For development&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; These steps &lt;a href=&quot;https://github.com/golang/go/issues/29228&quot;&gt;will not embed proper version information&lt;/a&gt;. For that, please follow the instructions in the next section.&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ git clone &quot;https://github.com/caddyserver/caddy.git&quot;
$ cd caddy/cmd/caddy/
$ go build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;When you run Caddy, it may try to bind to low ports unless otherwise specified in your config. If your OS requires elevated privileges for this, you will need to give your new binary permission to do so. On Linux, this can be done easily with: &lt;code&gt;sudo setcap cap_net_bind_service=+ep ./caddy&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;If you prefer to use &lt;code&gt;go run&lt;/code&gt; which only creates temporary binaries, you can still do this with the included &lt;code&gt;setcap.sh&lt;/code&gt; like so:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ go run -exec ./setcap.sh main.go
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you don&#39;t want to type your password for &lt;code&gt;setcap&lt;/code&gt;, use &lt;code&gt;sudo visudo&lt;/code&gt; to edit your sudoers file and allow your user account to run that command without a password, for example:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/setcap
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;replacing &lt;code&gt;username&lt;/code&gt; with your actual username. Please be careful and only do this if you know what you are doing! We are only qualified to document how to use Caddy, not Go tooling or your computer, and we are providing these instructions for convenience only; please learn how to use your own computer at your own risk and make any needful adjustments.&lt;/p&gt; 
&lt;p&gt;Then you can run the tests in all modules or a specific one:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ go test ./...
$ go test ./modules/caddyhttp/tracing/
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;With version information and/or plugins&lt;/h3&gt; 
&lt;p&gt;Using &lt;a href=&quot;https://github.com/caddyserver/xcaddy&quot;&gt;our builder tool, &lt;code&gt;xcaddy&lt;/code&gt;&lt;/a&gt;...&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xcaddy build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;...the following steps are automated:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Create a new folder: &lt;code&gt;mkdir caddy&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Change into it: &lt;code&gt;cd caddy&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Copy &lt;a href=&quot;https://github.com/caddyserver/caddy/raw/master/cmd/caddy/main.go&quot;&gt;Caddy&#39;s main.go&lt;/a&gt; into the empty folder. Add imports for any custom plugins you want to add.&lt;/li&gt; 
 &lt;li&gt;Initialize a Go module: &lt;code&gt;go mod init caddy&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;(Optional) Pin Caddy version: &lt;code&gt;go get github.com/caddyserver/caddy/v2@version&lt;/code&gt; replacing &lt;code&gt;version&lt;/code&gt; with a git tag, commit, or branch name.&lt;/li&gt; 
 &lt;li&gt;(Optional) Add plugins by adding their import: &lt;code&gt;_ &quot;import/path/here&quot;&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Compile: &lt;code&gt;go build -tags=nobadger,nomysql,nopgx&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Quick start&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://caddyserver.com/docs/&quot;&gt;Caddy website&lt;/a&gt; has documentation that includes tutorials, quick-start guides, reference, and more.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;We recommend that all users -- regardless of experience level -- do our &lt;a href=&quot;https://caddyserver.com/docs/getting-started&quot;&gt;Getting Started&lt;/a&gt; guide to become familiar with using Caddy.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;If you&#39;ve only got a minute, &lt;a href=&quot;https://caddyserver.com/docs/quick-starts&quot;&gt;the website has several quick-start tutorials&lt;/a&gt; to choose from! However, after finishing a quick-start tutorial, please read more documentation to understand how the software works. 🙂&lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Caddy is most often used as an HTTPS server, but it is suitable for any long-running Go program. First and foremost, it is a platform to run Go applications. Caddy &quot;apps&quot; are just Go programs that are implemented as Caddy modules. Two apps -- &lt;code&gt;tls&lt;/code&gt; and &lt;code&gt;http&lt;/code&gt; -- ship standard with Caddy.&lt;/p&gt; 
&lt;p&gt;Caddy apps instantly benefit from &lt;a href=&quot;https://caddyserver.com/docs/json/&quot;&gt;automated documentation&lt;/a&gt;, graceful on-line &lt;a href=&quot;https://caddyserver.com/docs/api&quot;&gt;config changes via API&lt;/a&gt;, and unification with other Caddy apps.&lt;/p&gt; 
&lt;p&gt;Although &lt;a href=&quot;https://caddyserver.com/docs/json/&quot;&gt;JSON&lt;/a&gt; is Caddy&#39;s native config language, Caddy can accept input from &lt;a href=&quot;https://caddyserver.com/docs/config-adapters&quot;&gt;config adapters&lt;/a&gt; which can essentially convert any config format of your choice into JSON: Caddyfile, JSON 5, YAML, TOML, NGINX config, and more.&lt;/p&gt; 
&lt;p&gt;The primary way to configure Caddy is through &lt;a href=&quot;https://caddyserver.com/docs/api&quot;&gt;its API&lt;/a&gt;, but if you prefer config files, the &lt;a href=&quot;https://caddyserver.com/docs/command-line&quot;&gt;command-line interface&lt;/a&gt; supports those too.&lt;/p&gt; 
&lt;p&gt;Caddy exposes an unprecedented level of control compared to any web server in existence. In Caddy, you are usually setting the actual values of the initialized types in memory that power everything from your HTTP handlers and TLS handshakes to your storage medium. Caddy is also ridiculously extensible, with a powerful plugin system that makes vast improvements over other web servers.&lt;/p&gt; 
&lt;p&gt;To wield the power of this design, you need to know how the config document is structured. Please see &lt;a href=&quot;https://caddyserver.com/docs/&quot;&gt;our documentation site&lt;/a&gt; for details about &lt;a href=&quot;https://caddyserver.com/docs/json/&quot;&gt;Caddy&#39;s config structure&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Nearly all of Caddy&#39;s configuration is contained in a single config document, rather than being scattered across CLI flags and env variables and a configuration file as with other web servers. This makes managing your server config more straightforward and reduces hidden variables/factors.&lt;/p&gt; 
&lt;h2&gt;Full documentation&lt;/h2&gt; 
&lt;p&gt;Our website has complete documentation:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://caddyserver.com/docs/&quot;&gt;https://caddyserver.com/docs/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The docs are also open source. You can contribute to them here: &lt;a href=&quot;https://github.com/caddyserver/website&quot;&gt;https://github.com/caddyserver/website&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Getting help&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;We advise companies using Caddy to secure a support contract through &lt;a href=&quot;https://www.ardanlabs.com&quot;&gt;Ardan Labs&lt;/a&gt; before help is needed.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;A &lt;a href=&quot;https://github.com/sponsors/mholt&quot;&gt;sponsorship&lt;/a&gt; goes a long way! We can offer private help to sponsors. If Caddy is benefitting your company, please consider a sponsorship. This not only helps fund full-time work to ensure the longevity of the project, it provides your company the resources, support, and discounts you need; along with being a great look for your company to your customers and potential customers!&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Individuals can exchange help for free on our community forum at &lt;a href=&quot;https://caddy.community&quot;&gt;https://caddy.community&lt;/a&gt;. Remember that people give help out of their spare time and good will. The best way to get help is to give it first!&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Please use our &lt;a href=&quot;https://github.com/caddyserver/caddy/issues&quot;&gt;issue tracker&lt;/a&gt; only for bug reports and feature requests, i.e. actionable development items (support questions will usually be referred to the forums).&lt;/p&gt; 
&lt;h2&gt;About&lt;/h2&gt; 
&lt;p&gt;Matthew Holt began developing Caddy in 2014 while studying computer science at Brigham Young University. (The name &quot;Caddy&quot; was chosen because this software helps with the tedious, mundane tasks of serving the Web, and is also a single place for multiple things to be organized together.) It soon became the first web server to use HTTPS automatically and by default, and now has hundreds of contributors and has served trillions of HTTPS requests.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;The name &quot;Caddy&quot; is trademarked.&lt;/strong&gt; The name of the software is &quot;Caddy&quot;, not &quot;Caddy Server&quot; or &quot;CaddyServer&quot;. Please call it &quot;Caddy&quot; or, if you wish to clarify, &quot;the Caddy web server&quot;. Caddy is a registered trademark of Stack Holdings GmbH.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;em&gt;Project on X: &lt;a href=&quot;https://x.com/caddyserver&quot;&gt;@caddyserver&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Author on X: &lt;a href=&quot;https://x.com/mholt6&quot;&gt;@mholt6&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Caddy is a project of &lt;a href=&quot;https://zerossl.com&quot;&gt;ZeroSSL&lt;/a&gt;, an HID Global company.&lt;/p&gt; 
&lt;p&gt;Debian package repository hosting is graciously provided by &lt;a href=&quot;https://cloudsmith.com&quot;&gt;Cloudsmith&lt;/a&gt;. Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that enables your organization to create, store and share packages in any format, to any place, with total confidence.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>multica-ai/multica</title>
      <link>https://github.com/multica-ai/multica</link>
      <description>&lt;p&gt;Assign issues to Claude Code, Codex, Cursor, and 17 more coding agents like teammates — open-source and self-hostable.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;docs/assets/logo-dark.svg&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;docs/assets/logo-light.svg&quot; /&gt; 
  &lt;img alt=&quot;Multica&quot; src=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/docs/assets/logo-light.svg?sanitize=true&quot; width=&quot;50&quot; /&gt; 
 &lt;/picture&gt; 
 &lt;h1&gt;Multica&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;Agents that show up on the board.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Multica is an open-source workspace where you assign work to AI coding agents the way you&#39;d assign it to a teammate — they pick up the issue, report progress, raise blockers, and hand it back for review. Self-hostable, works with 20 agent CLIs, no lock-in.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/multica-ai/multica/actions/workflows/ci.yml&quot;&gt;&lt;img src=&quot;https://github.com/multica-ai/multica/actions/workflows/ci.yml/badge.svg?sanitize=true&quot; alt=&quot;CI&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/multica-ai/multica/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/multica-ai/multica?style=flat&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/multica-ai/multica/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/multica-ai/multica?style=flat&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/W8gYBn226t&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://multica.ai&quot;&gt;Website&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs&quot;&gt;Docs&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/cloud-quickstart&quot;&gt;Quickstart&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/download&quot;&gt;Download&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/VISION.md&quot;&gt;Vision&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/SELF_HOSTING.md&quot;&gt;Self-Hosting&lt;/a&gt; · &lt;a href=&quot;https://discord.gg/W8gYBn226t&quot;&gt;Discord&lt;/a&gt; · &lt;a href=&quot;https://x.com/MulticaAI&quot;&gt;X&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;English | &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/README.zh.md&quot;&gt;简体中文&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/docs/assets/hero-board.png&quot; alt=&quot;A Multica board where six agents and their human teammates are moving work across columns&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;sub&gt;&lt;em&gt;Your next 10 hires won&#39;t be human.&lt;/em&gt;&lt;/sub&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;What is Multica?&lt;/h2&gt; 
&lt;p&gt;You already run Claude Code, Codex, and three other agents. Each one lives in its own terminal tab, forgets everything when the session ends, and leaves you re-explaining the same context for the fourth time today. The more agents you add, the more of your day goes to babysitting them.&lt;/p&gt; 
&lt;p&gt;Multica puts those agents and your teammates in one workspace. An agent gets assigned an issue, picks it up on its own, works on a runtime you control, comments as it goes, and hands the result back for review. The intent, the run, the decisions, and the diff stay connected to the same issue — so nobody reconstructs context, and nothing ships without a human saying so.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Build the team.&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;Claude Code, Codex, Cursor, Kimi — you don&#39;t pick one. You hire them all.&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/#runtimes&quot;&gt;20 agent CLIs&lt;/a&gt; →&lt;/strong&gt; Claude Code, Codex, Cursor, Copilot, Kimi, OpenCode, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/agents&quot;&gt;Agents as teammates&lt;/a&gt; →&lt;/strong&gt; Give each one a name, a provider, and a runtime — they show up on the board like anyone else.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/squads&quot;&gt;Squads&lt;/a&gt; →&lt;/strong&gt; Put agents and people on one team; the leader routes the work.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/skills&quot;&gt;Skills&lt;/a&gt; →&lt;/strong&gt; Turn a solved problem into a playbook every agent reuses.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/daemon-runtimes&quot;&gt;Your own runtime&lt;/a&gt; →&lt;/strong&gt; Their desk is your machine — a daemon on your laptop or cloud box. Code never leaves it.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Hand off the work.&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;It starts as three rough sentences in an issue. It ends as a pull request.&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/assigning-issues&quot;&gt;Assign an issue&lt;/a&gt; →&lt;/strong&gt; Pick an agent as assignee the way you&#39;d pick a colleague — it takes the work from there.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/autopilots&quot;&gt;Autopilots&lt;/a&gt; →&lt;/strong&gt; Run standups, audits, and reports on a cron — nobody to remind.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/chat&quot;&gt;Chat&lt;/a&gt; →&lt;/strong&gt; Ask your workspace a question, or start work without filing anything.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/projects&quot;&gt;Projects&lt;/a&gt; →&lt;/strong&gt; Group work and attach the repos and docs agents need as context.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Stay in the loop.&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;Which agent touched this? What did it run? What did it cost? Open the run.&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/tasks&quot;&gt;Execution log&lt;/a&gt; →&lt;/strong&gt; Replay every tool call, command, and error, timestamped.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Token usage →&lt;/strong&gt; See what each run cost, per agent and per issue.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/issues&quot;&gt;Review gates&lt;/a&gt; →&lt;/strong&gt; Work lands in review, not in main. You decide what ships.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/inbox&quot;&gt;Inbox&lt;/a&gt; →&lt;/strong&gt; Get pinged when an agent needs a call, not for every step.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/tasks#failures-and-automatic-retries&quot;&gt;Retries and timeouts&lt;/a&gt; →&lt;/strong&gt; Failed runs retry on their own, or stop and tell you why.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Make it yours.&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;Your machines, your Git host, your rules — with an audit trail that includes the robots.&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/SELF_HOSTING.md&quot;&gt;Self-host everything&lt;/a&gt; →&lt;/strong&gt; Docker Compose or Helm, on your own infrastructure.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/vcs-integration&quot;&gt;Any Git host&lt;/a&gt; →&lt;/strong&gt; GitHub, GitLab, Gitea, or Forgejo — self-hosted included.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/workspaces&quot;&gt;Workspaces&lt;/a&gt; →&lt;/strong&gt; Separate agents, issues, and settings per team.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/members-roles&quot;&gt;Roles&lt;/a&gt; and &lt;a href=&quot;https://multica.ai/docs/agents#permissions-and-access&quot;&gt;access scopes&lt;/a&gt; →&lt;/strong&gt; &lt;code&gt;owner&lt;/code&gt;, &lt;code&gt;admin&lt;/code&gt;, and &lt;code&gt;member&lt;/code&gt; — and exactly which agents each member can run.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/security-model&quot;&gt;Security model&lt;/a&gt; →&lt;/strong&gt; What an agent can reach, and what it can&#39;t.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/channels&quot;&gt;Slack, Lark, DingTalk, and WeCom&lt;/a&gt; →&lt;/strong&gt; Trigger and follow agent work where your team already talks. DingTalk and WeCom are community-maintained.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/desktop-app&quot;&gt;Web, desktop, and mobile&lt;/a&gt; →&lt;/strong&gt; The same workspace on macOS, Windows, Linux, and iPhone — iOS builds from source today, not yet on the App Store.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://multica.ai/docs/cli&quot;&gt;CLI and API&lt;/a&gt; →&lt;/strong&gt; Every surface is scriptable. Agents drive Multica through the same CLI you do.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Get started&lt;/h2&gt; 
&lt;p&gt;No terminal required: sign up at &lt;strong&gt;&lt;a href=&quot;https://multica.ai&quot;&gt;multica.ai&lt;/a&gt;&lt;/strong&gt;, or download &lt;strong&gt;&lt;a href=&quot;https://multica.ai/download&quot;&gt;Multica Desktop&lt;/a&gt;&lt;/strong&gt; for macOS, Windows, and Linux — it connects the computer it runs on as a runtime automatically.&lt;/p&gt; 
&lt;p&gt;The one prerequisite: the machine that will run agents needs at least one &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/#runtimes&quot;&gt;supported agent CLI&lt;/a&gt; installed and signed in — Claude Code, Codex, Cursor, and friends. Multica drives them; it doesn&#39;t ship them.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Self-hosting the whole thing&lt;/b&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --with-server
multica setup self-host
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;On Windows, set &lt;code&gt;$env:MULTICA_MODE=&quot;with-server&quot;&lt;/code&gt;, then run the PowerShell installer: &lt;code&gt;irm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iex&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;This pulls the official images from GHCR and requires Docker. See the &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/SELF_HOSTING.md&quot;&gt;Self-Hosting Guide&lt;/a&gt;; if the selected GHCR tag has not been published yet, fall back to &lt;code&gt;make selfhost-build&lt;/code&gt; from a checkout.&lt;/p&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Your first agent in five minutes&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;1. Sign in.&lt;/strong&gt; &lt;a href=&quot;https://multica.ai&quot;&gt;multica.ai&lt;/a&gt; in the browser, or open &lt;a href=&quot;https://multica.ai/download&quot;&gt;Multica Desktop&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Connect a computer.&lt;/strong&gt; A &lt;em&gt;runtime&lt;/em&gt; is any machine agents can work on — your laptop, or a cloud box. Desktop registers the computer it&#39;s running on automatically and detects the agent CLIs installed there. On the web — or to add another machine — open &lt;strong&gt;Runtimes&lt;/strong&gt; in the sidebar, click &lt;strong&gt;Add a computer&lt;/strong&gt;, and paste the two commands it shows into a terminal on that machine.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Create an agent.&lt;/strong&gt; Open &lt;strong&gt;Agents&lt;/strong&gt; in the sidebar and click &lt;strong&gt;New agent&lt;/strong&gt;. Pick the runtime you just connected, pick a provider, and give it a name — or let &lt;strong&gt;Build with AI&lt;/strong&gt; generate the configuration from a description. That name is how it shows up on the board and in comments.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;4. Assign it something.&lt;/strong&gt; File an issue and set the agent as assignee. It picks the task up, runs it on your machine, comments as it goes, and moves the issue to review when it&#39;s done.&lt;/p&gt; 
&lt;p&gt;Full walkthrough: &lt;a href=&quot;https://multica.ai/docs/cloud-quickstart&quot;&gt;Quickstart&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/tutorial&quot;&gt;Tutorial&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Runtimes&lt;/h2&gt; 
&lt;p&gt;Multica does not ship a model. It drives the agent CLIs you already have installed and authenticated, so switching providers is a dropdown, not a migration.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Provider&lt;/th&gt; 
   &lt;th&gt;CLI&lt;/th&gt; 
   &lt;th&gt;Provider&lt;/th&gt; 
   &lt;th&gt;CLI&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude Code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;claude&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;OpenAI Codex&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;codex&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cursor Agent&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;cursor-agent&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Copilot CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;copilot&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OpenCode&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;opencode&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;OpenClaw&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;openclaw&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Hermes&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;hermes&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Pi&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;pi&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Antigravity&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;agy&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;CodeBuddy&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;codebuddy&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DevEco Code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;deveco&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Grok&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;grok&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kimi&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;kimi&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Kiro CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;kiro-cli&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Qoder CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qodercli&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Qoder CN&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qoderclicn&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Qwen Code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qwen&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;QwenPaw&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qwenpaw&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Reasonix&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;reasonix&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Trae CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;traecli&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DeepSeek Harness&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;dsh&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Oh-My-Pi&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;omp&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Installing and authenticating them: &lt;a href=&quot;https://multica.ai/docs/install-agent-runtime&quot;&gt;Install an agent runtime&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/providers&quot;&gt;Providers&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;I want to…&lt;/th&gt; 
   &lt;th&gt;Start here&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Get an agent doing something today&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/cloud-quickstart&quot;&gt;Quickstart&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/tutorial&quot;&gt;Tutorial&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Understand how the pieces fit&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/concepts&quot;&gt;Core concepts&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/how-multica-works&quot;&gt;How Multica works&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Create and configure agents&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/agents&quot;&gt;Agents&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/agents-create&quot;&gt;Create an agent&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/skills&quot;&gt;Skills&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Get work to an agent&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/triggering-agents&quot;&gt;Triggering agents&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/assigning-issues&quot;&gt;Assigning issues&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/mentioning-agents&quot;&gt;Mentions&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Connect my machines&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/daemon-runtimes&quot;&gt;Daemon and runtimes&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/install-agent-runtime&quot;&gt;Install an agent runtime&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Connect Git and chat tools&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/github-integration&quot;&gt;GitHub&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/vcs-integration&quot;&gt;Self-hosted Git&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/channels&quot;&gt;Channels&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Run it on my own infrastructure&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/SELF_HOSTING.md&quot;&gt;Self-hosting&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/security-model&quot;&gt;Security model&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/environment-variables&quot;&gt;Environment variables&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Script it&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/cli&quot;&gt;CLI reference&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/CLI_AND_DAEMON.md&quot;&gt;CLI and daemon guide&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/auth-tokens&quot;&gt;Auth tokens&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Drive Multica from Codex, Claude Code, or Cursor&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/multica-ai/multica-cli&quot;&gt;Multica CLI skill&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Work out why an agent is stuck&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://multica.ai/docs/tasks&quot;&gt;Tasks&lt;/a&gt; · &lt;a href=&quot;https://multica.ai/docs/troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Architecture&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;        Web  ·  Desktop (macOS/Windows/Linux)  ·  iOS
                          │
                          ▼
   ┌──────────────┐   ┌──────────────┐   ┌──────────────────┐
   │   Next.js    │──&amp;gt;│  Go backend  │──&amp;gt;│   PostgreSQL     │
   │   frontend   │&amp;lt;──│  (Chi + WS)  │&amp;lt;──│   (pgvector)     │
   └──────────────┘   └──────┬───────┘   └──────────────────┘
                             │  tasks over WebSocket
                      ┌──────┴───────┐
                      │ Agent daemon │  runs on your machine, next to your code
                      └──────┬───────┘
                             │  spawns
                      ┌──────┴───────────────────────────────┐
                      │  Claude Code · Codex · Cursor · …    │
                      │  (any of the 20 runtimes above)      │
                      └──────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Layer&lt;/th&gt; 
   &lt;th&gt;Stack&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Web&lt;/td&gt; 
   &lt;td&gt;Next.js 16 (App Router)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Desktop&lt;/td&gt; 
   &lt;td&gt;Electron, sharing the web UI packages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Mobile&lt;/td&gt; 
   &lt;td&gt;Expo / React Native (iOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Backend&lt;/td&gt; 
   &lt;td&gt;Go (Chi router, sqlc, gorilla/websocket)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Database&lt;/td&gt; 
   &lt;td&gt;PostgreSQL 17 with pgvector&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent runtime&lt;/td&gt; 
   &lt;td&gt;Local daemon executing any of the 20 agent CLIs above&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;Contributors: start with the &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; &lt;a href=&quot;https://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; v20+, &lt;a href=&quot;https://pnpm.io/&quot;&gt;pnpm&lt;/a&gt; v10.28+, &lt;a href=&quot;https://go.dev/&quot;&gt;Go&lt;/a&gt; v1.26+, &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;&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;&lt;code&gt;make dev&lt;/code&gt; auto-detects your environment (main checkout or worktree), creates the env file, installs dependencies, sets up the database, runs migrations, and starts every service.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for the full workflow, worktree support, testing, and troubleshooting. The iOS client lives in &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/apps/mobile/&quot;&gt;&lt;code&gt;apps/mobile/&lt;/code&gt;&lt;/a&gt; — its &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/apps/mobile/README.md&quot;&gt;README&lt;/a&gt; covers building it onto your own iPhone.&lt;/p&gt; 
&lt;p&gt;We release most weekdays, so &lt;code&gt;main&lt;/code&gt; moves quickly — pull often.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Why &quot;Multica&quot;?&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Mul&lt;/strong&gt;tiplexed &lt;strong&gt;I&lt;/strong&gt;nformation and &lt;strong&gt;C&lt;/strong&gt;omputing &lt;strong&gt;A&lt;/strong&gt;gent — a nod to Multics, the 1960s operating system that introduced time-sharing so several people could use one machine as if each had it to themselves.&lt;/p&gt; 
&lt;p&gt;Software teams have been single-threaded ever since: one engineer, one task, one context switch at a time. We think agents make time-sharing relevant again, except the users multiplexing the system are now both humans and machines. A small team shouldn&#39;t feel small.&lt;/p&gt; 
&lt;p&gt;The longer argument, and where we think this goes: &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/VISION.md&quot;&gt;VISION.md&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/LICENSE&quot;&gt;Multica License&lt;/a&gt; — the complete Apache License 2.0 text plus additional conditions covering hosted services, commercial embedding, and branding. Self-host it, modify it, build on it; the exact terms are in the &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;, attribution notices in &lt;a href=&quot;https://raw.githubusercontent.com/multica-ai/multica/main/NOTICE&quot;&gt;NOTICE&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>rclone/rclone</title>
      <link>https://github.com/rclone/rclone</link>
      <description>&lt;p&gt;&quot;rsync for cloud storage&quot; - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://rclone.org/#gh-light-mode-only&quot;&gt;&lt;img src=&quot;https://rclone.org/img/logo_on_light__horizontal_color.svg?sanitize=true&quot; width=&quot;50%&quot; alt=&quot;rclone logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;!-- markdownlint-disable-next-line no-inline-html --&gt; 
&lt;p&gt;&lt;a href=&quot;https://rclone.org/#gh-dark-mode-only&quot;&gt;&lt;img src=&quot;https://rclone.org/img/logo_on_dark__horizontal_color.svg?sanitize=true&quot; width=&quot;50%&quot; alt=&quot;rclone logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://rclone.org&quot;&gt;Website&lt;/a&gt; | &lt;a href=&quot;https://rclone.org/docs/&quot;&gt;Documentation&lt;/a&gt; | &lt;a href=&quot;https://rclone.org/downloads/&quot;&gt;Download&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/rclone/rclone/master/CONTRIBUTING.md&quot;&gt;Contributing&lt;/a&gt; | &lt;a href=&quot;https://rclone.org/changelog/&quot;&gt;Changelog&lt;/a&gt; | &lt;a href=&quot;https://rclone.org/install/&quot;&gt;Installation&lt;/a&gt; | &lt;a href=&quot;https://forum.rclone.org/&quot;&gt;Forum&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/rclone/rclone/actions?query=workflow%3Abuild&quot;&gt;&lt;img src=&quot;https://github.com/rclone/rclone/workflows/build/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/rclone/rclone&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/rclone/rclone&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://godoc.org/github.com/rclone/rclone&quot;&gt;&lt;img src=&quot;https://godoc.org/github.com/rclone/rclone?status.svg?sanitize=true&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/rclone/rclone&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/rclone/rclone&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;Rclone&lt;/h1&gt; 
&lt;p&gt;Rclone &lt;em&gt;(&quot;rsync for cloud storage&quot;)&lt;/em&gt; is a command-line program to sync files and directories to and from different cloud storage providers.&lt;/p&gt; 
&lt;h2&gt;Storage providers&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;1Fichier &lt;a href=&quot;https://rclone.org/fichier/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Akamai Netstorage &lt;a href=&quot;https://rclone.org/netstorage/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Alibaba Cloud (Aliyun) Object Storage System (OSS) &lt;a href=&quot;https://rclone.org/s3/#alibaba-oss&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Amazon S3 &lt;a href=&quot;https://rclone.org/s3/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;ArvanCloud Object Storage (AOS) &lt;a href=&quot;https://rclone.org/s3/#arvan-cloud-object-storage-aos&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Bizfly Cloud Simple Storage &lt;a href=&quot;https://rclone.org/s3/#bizflycloud&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Backblaze B2 &lt;a href=&quot;https://rclone.org/b2/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Box &lt;a href=&quot;https://rclone.org/box/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Ceph &lt;a href=&quot;https://rclone.org/s3/#ceph&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;China Mobile Ecloud Elastic Object Storage (EOS) &lt;a href=&quot;https://rclone.org/s3/#china-mobile-ecloud-eos&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Citrix ShareFile &lt;a href=&quot;https://rclone.org/sharefile/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Cloudflare R2 &lt;a href=&quot;https://rclone.org/s3/#cloudflare-r2&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Cloudinary &lt;a href=&quot;https://rclone.org/cloudinary/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Cubbit DS3 &lt;a href=&quot;https://rclone.org/s3/#Cubbit&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;DigitalOcean Spaces &lt;a href=&quot;https://rclone.org/s3/#digitalocean-spaces&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Digi Storage &lt;a href=&quot;https://rclone.org/koofr/#digi-storage&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Dreamhost &lt;a href=&quot;https://rclone.org/s3/#dreamhost&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Drime &lt;a href=&quot;https://rclone.org/s3/#drime&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Dropbox &lt;a href=&quot;https://rclone.org/dropbox/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Enterprise File Fabric &lt;a href=&quot;https://rclone.org/filefabric/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Exaba &lt;a href=&quot;https://rclone.org/s3/#exaba&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fastly Object Storage &lt;a href=&quot;https://rclone.org/s3/#fastly&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fastmail Files &lt;a href=&quot;https://rclone.org/webdav/#fastmail-files&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;FileLu &lt;a href=&quot;https://rclone.org/filelu/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Filen &lt;a href=&quot;https://rclone.org/filen/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://Files.com&quot;&gt;Files.com&lt;/a&gt; &lt;a href=&quot;https://rclone.org/filescom/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;FlashBlade &lt;a href=&quot;https://rclone.org/s3/#pure-storage-flashblade&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;FTP &lt;a href=&quot;https://rclone.org/ftp/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;GoFile &lt;a href=&quot;https://rclone.org/gofile/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Google Cloud Storage &lt;a href=&quot;https://rclone.org/googlecloudstorage/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Google Drive &lt;a href=&quot;https://rclone.org/drive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Google Photos &lt;a href=&quot;https://rclone.org/googlephotos/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;HDFS (Hadoop Distributed Filesystem) &lt;a href=&quot;https://rclone.org/hdfs/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hetzner Object Storage &lt;a href=&quot;https://rclone.org/s3/#hetzner&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hetzner Storage Box &lt;a href=&quot;https://rclone.org/sftp/#hetzner-storage-box&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;HiDrive &lt;a href=&quot;https://rclone.org/hidrive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hitachi Content Platform (HCP) &lt;a href=&quot;https://rclone.org/s3/#hcp&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;HTTP &lt;a href=&quot;https://rclone.org/http/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Huawei Cloud Object Storage Service(OBS) &lt;a href=&quot;https://rclone.org/s3/#huawei-obs&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Huawei Drive &lt;a href=&quot;https://rclone.org/huaweidrive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;iCloud Drive &lt;a href=&quot;https://rclone.org/iclouddrive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;ImageKit &lt;a href=&quot;https://rclone.org/imagekit/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Internet Archive &lt;a href=&quot;https://rclone.org/internetarchive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Internxt &lt;a href=&quot;https://rclone.org/internxt/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Jottacloud &lt;a href=&quot;https://rclone.org/jottacloud/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;IBM COS S3 &lt;a href=&quot;https://rclone.org/s3/#ibm-cos-s3&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Impossible Cloud &lt;a href=&quot;https://rclone.org/s3/#impossible-cloud&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Intercolo Object Storage &lt;a href=&quot;https://rclone.org/s3/#intercolo&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;IONOS Cloud &lt;a href=&quot;https://rclone.org/s3/#ionos&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Koofr &lt;a href=&quot;https://rclone.org/koofr/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Leviia Object Storage &lt;a href=&quot;https://rclone.org/s3/#leviia&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Liara Object Storage &lt;a href=&quot;https://rclone.org/s3/#liara-object-storage&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Linkbox &lt;a href=&quot;https://rclone.org/linkbox&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Linode Object Storage &lt;a href=&quot;https://rclone.org/s3/#linode&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Magalu Object Storage &lt;a href=&quot;https://rclone.org/s3/#magalu&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://Mail.ru&quot;&gt;Mail.ru&lt;/a&gt; Cloud &lt;a href=&quot;https://rclone.org/mailru/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Memset Memstore &lt;a href=&quot;https://rclone.org/swift/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;MEGA &lt;a href=&quot;https://rclone.org/mega/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;MEGA S4 Object Storage &lt;a href=&quot;https://rclone.org/s3/#mega&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Memory &lt;a href=&quot;https://rclone.org/memory/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Microsoft Azure Blob Storage &lt;a href=&quot;https://rclone.org/azureblob/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Microsoft Azure Files Storage &lt;a href=&quot;https://rclone.org/azurefiles/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Microsoft OneDrive &lt;a href=&quot;https://rclone.org/onedrive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Minio &lt;a href=&quot;https://rclone.org/s3/#minio&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Nextcloud &lt;a href=&quot;https://rclone.org/webdav/#nextcloud&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Blomp Cloud Storage &lt;a href=&quot;https://rclone.org/swift/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;OpenDrive &lt;a href=&quot;https://rclone.org/opendrive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;OpenStack Swift &lt;a href=&quot;https://rclone.org/swift/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Oracle Cloud Storage &lt;a href=&quot;https://rclone.org/swift/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Oracle Object Storage &lt;a href=&quot;https://rclone.org/oracleobjectstorage/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Outscale &lt;a href=&quot;https://rclone.org/s3/#outscale&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;OVHcloud Object Storage (Swift) &lt;a href=&quot;https://rclone.org/swift/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;OVHcloud Object Storage (S3-compatible) &lt;a href=&quot;https://rclone.org/s3/#ovhcloud&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;ownCloud &lt;a href=&quot;https://rclone.org/webdav/#owncloud&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;pCloud &lt;a href=&quot;https://rclone.org/pcloud/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Petabox &lt;a href=&quot;https://rclone.org/s3/#petabox&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;PikPak &lt;a href=&quot;https://rclone.org/pikpak/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Pixeldrain &lt;a href=&quot;https://rclone.org/pixeldrain/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://premiumize.me&quot;&gt;premiumize.me&lt;/a&gt; &lt;a href=&quot;https://rclone.org/premiumizeme/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://put.io&quot;&gt;put.io&lt;/a&gt; &lt;a href=&quot;https://rclone.org/putio/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Proton Drive &lt;a href=&quot;https://rclone.org/protondrive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;QingStor &lt;a href=&quot;https://rclone.org/qingstor/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Qiniu Cloud Object Storage (Kodo) &lt;a href=&quot;https://rclone.org/s3/#qiniu&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Rabata Cloud Storage &lt;a href=&quot;https://rclone.org/s3/#Rabata&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Quatrix &lt;a href=&quot;https://rclone.org/quatrix/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Rackspace Cloud Files &lt;a href=&quot;https://rclone.org/swift/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;RackCorp Object Storage &lt;a href=&quot;https://rclone.org/s3/#RackCorp&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://rsync.net&quot;&gt;rsync.net&lt;/a&gt; &lt;a href=&quot;https://rclone.org/sftp/#rsync-net&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Scaleway &lt;a href=&quot;https://rclone.org/s3/#scaleway&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Scality (RING / ARTESCA) &lt;a href=&quot;https://rclone.org/s3/#scality&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Seafile &lt;a href=&quot;https://rclone.org/seafile/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Seagate Lyve Cloud &lt;a href=&quot;https://rclone.org/s3/#lyve&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;SeaweedFS &lt;a href=&quot;https://rclone.org/s3/#seaweedfs&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Selectel Object Storage &lt;a href=&quot;https://rclone.org/s3/#selectel&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Servercore Object Storage &lt;a href=&quot;https://rclone.org/s3/#servercore&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;SFTP &lt;a href=&quot;https://rclone.org/sftp/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Shade &lt;a href=&quot;https://rclone.org/shade/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;SMB / CIFS &lt;a href=&quot;https://rclone.org/smb/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Spectra Logic &lt;a href=&quot;https://rclone.org/s3/#spectralogic&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Storj &lt;a href=&quot;https://rclone.org/storj/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;SugarSync &lt;a href=&quot;https://rclone.org/sugarsync/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Synology C2 Object Storage &lt;a href=&quot;https://rclone.org/s3/#synology-c2&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Tencent Cloud Object Storage (COS) &lt;a href=&quot;https://rclone.org/s3/#tencent-cos&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://Uloz.to&quot;&gt;Uloz.to&lt;/a&gt; &lt;a href=&quot;https://rclone.org/ulozto/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;US3 Object Storage &lt;a href=&quot;https://rclone.org/s3/#us3&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Wasabi &lt;a href=&quot;https://rclone.org/s3/#wasabi&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;WebDAV &lt;a href=&quot;https://rclone.org/webdav/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Yandex Disk &lt;a href=&quot;https://rclone.org/yandex/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Zadara Object Storage &lt;a href=&quot;https://rclone.org/s3/#zadara&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Zero Services (ZERO-Z3) &lt;a href=&quot;https://rclone.org/s3/#zero-z3&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Zoho WorkDrive &lt;a href=&quot;https://rclone.org/zoho/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://Zata.ai&quot;&gt;Zata.ai&lt;/a&gt; &lt;a href=&quot;https://rclone.org/s3/#Zata&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The local filesystem &lt;a href=&quot;https://rclone.org/local/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Please see &lt;a href=&quot;https://rclone.org/overview/&quot;&gt;the full list of all storage providers and their features&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Virtual storage providers&lt;/h3&gt; 
&lt;p&gt;These backends adapt or modify other storage providers&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Alias: rename existing remotes &lt;a href=&quot;https://rclone.org/alias/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Archive: read archive files &lt;a href=&quot;https://rclone.org/archive/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Cache: cache remotes (DEPRECATED) &lt;a href=&quot;https://rclone.org/cache/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Chunker: split large files &lt;a href=&quot;https://rclone.org/chunker/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Combine: combine multiple remotes into a directory tree &lt;a href=&quot;https://rclone.org/combine/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Compress: compress files &lt;a href=&quot;https://rclone.org/compress/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Crypt: encrypt files &lt;a href=&quot;https://rclone.org/crypt/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hasher: hash files &lt;a href=&quot;https://rclone.org/hasher/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Union: join multiple remotes to work together &lt;a href=&quot;https://rclone.org/union/&quot;&gt;📄&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;MD5/SHA-1 hashes checked at all times for file integrity&lt;/li&gt; 
 &lt;li&gt;Timestamps preserved on files&lt;/li&gt; 
 &lt;li&gt;Partial syncs supported on a whole file basis&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/commands/rclone_copy/&quot;&gt;Copy&lt;/a&gt; mode to just copy new/changed files&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/commands/rclone_sync/&quot;&gt;Sync&lt;/a&gt; (one way) mode to make a directory identical&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/bisync/&quot;&gt;Bisync&lt;/a&gt; (two way) to keep two directories in sync bidirectionally&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/commands/rclone_check/&quot;&gt;Check&lt;/a&gt; mode to check for file hash equality&lt;/li&gt; 
 &lt;li&gt;Can sync to and from network, e.g. two different cloud accounts&lt;/li&gt; 
 &lt;li&gt;Optional large file chunking (&lt;a href=&quot;https://rclone.org/chunker/&quot;&gt;Chunker&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Optional transparent compression (&lt;a href=&quot;https://rclone.org/compress/&quot;&gt;Compress&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Optional encryption (&lt;a href=&quot;https://rclone.org/crypt/&quot;&gt;Crypt&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Optional FUSE mount (&lt;a href=&quot;https://rclone.org/commands/rclone_mount/&quot;&gt;rclone mount&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Multi-threaded downloads to local disk&lt;/li&gt; 
 &lt;li&gt;Can &lt;a href=&quot;https://rclone.org/commands/rclone_serve/&quot;&gt;serve&lt;/a&gt; local or remote files over HTTP/WebDAV/FTP/SFTP/DLNA&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation &amp;amp; documentation&lt;/h2&gt; 
&lt;p&gt;Please see the &lt;a href=&quot;https://rclone.org/&quot;&gt;rclone website&lt;/a&gt; for:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/install/&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/docs/&quot;&gt;Documentation &amp;amp; configuration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/changelog/&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/faq/&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/overview/&quot;&gt;Storage providers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://forum.rclone.org/&quot;&gt;Forum&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;...and more&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Downloads&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rclone.org/downloads/&quot;&gt;https://rclone.org/downloads/&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This is free software under the terms of the MIT license (check the &lt;a href=&quot;https://raw.githubusercontent.com/rclone/rclone/master/COPYING&quot;&gt;COPYING file&lt;/a&gt; included in this package).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>netbirdio/netbird</title>
      <link>https://github.com/netbirdio/netbird</link>
      <description>&lt;p&gt;Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;img width=&quot;234&quot; src=&quot;https://raw.githubusercontent.com/netbirdio/netbird/main/docs/media/logo-full.png&quot; alt=&quot;NetBird logo&quot; /&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://sonarcloud.io/dashboard?id=netbirdio_netbird&quot;&gt; &lt;img src=&quot;https://sonarcloud.io/api/project_badges/measure?project=netbirdio_netbird&amp;amp;metric=alert_status&quot; alt=&quot;SonarCloud alert status&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/netbirdio/netbird/raw/main/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/license-BSD--3-blue&quot; alt=&quot;BSD-3 License&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://docs.netbird.io/slack-url&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/slack-@netbird-red.svg?logo=slack&quot; alt=&quot;NetBird Slack&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://forum.netbird.io&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/community%20forum-@netbird-red.svg?logo=discourse&quot; alt=&quot;Community forum&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://gurubase.io/g/netbird&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Gurubase-Ask%20NetBird%20Guru-006BFF&quot; alt=&quot;Gurubase: Ask NetBird Guru&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt; Start using NetBird at &lt;a href=&quot;https://netbird.io/pricing&quot;&gt;netbird.io&lt;/a&gt; &lt;br /&gt; See &lt;a href=&quot;https://netbird.io/docs/&quot;&gt;Documentation&lt;/a&gt; &lt;br /&gt; Join our &lt;a href=&quot;https://docs.netbird.io/slack-url&quot;&gt;Slack channel&lt;/a&gt; or our &lt;a href=&quot;https://forum.netbird.io&quot;&gt;Community forum&lt;/a&gt; &lt;/strong&gt; &lt;br /&gt; &lt;br /&gt; &lt;strong&gt; 🚀 &lt;a href=&quot;https://netbird.io/careers&quot;&gt;We are hiring! Join us at https://netbird.io/careers&lt;/a&gt; &lt;/strong&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;h3&gt;🤖 NetBird Agent Network (Beta)&lt;/h3&gt; 
 &lt;p&gt;Identity-aware access control for AI agents — keyless access to LLM APIs and private resources over the encrypted NetBird tunnel. See &lt;a href=&quot;https://raw.githubusercontent.com/netbirdio/netbird/main/agent-network/&quot;&gt;&lt;code&gt;agent-network/&lt;/code&gt;&lt;/a&gt; or read the docs at &lt;strong&gt;&lt;a href=&quot;https://netbird.ai&quot;&gt;netbird.ai&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;NetBird combines a configuration-free peer-to-peer private network and a centralized access control system in a single platform, making it easy to create secure private networks for your organization or home.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Connect.&lt;/strong&gt; NetBird creates a WireGuard-based overlay network that automatically connects your machines over an encrypted tunnel, leaving behind the hassle of opening ports, complex firewall rules, VPN gateways, and so forth.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Secure.&lt;/strong&gt; NetBird enables secure remote access by applying granular access policies while allowing you to manage them intuitively from a single place. Works universally on any infrastructure.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/10cec749-bb56-4ab3-97af-4e38850108d2&quot;&gt;https://github.com/user-attachments/assets/10cec749-bb56-4ab3-97af-4e38850108d2&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Self-host NetBird (video)&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://youtu.be/bZAgpT6nzaQ&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/bZAgpT6nzaQ/0.jpg&quot; alt=&quot;Watch the video&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Key features&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Connectivity&lt;/th&gt; 
   &lt;th&gt;Management&lt;/th&gt; 
   &lt;th&gt;Security&lt;/th&gt; 
   &lt;th&gt;Automation&lt;/th&gt; 
   &lt;th&gt;Platforms&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/about-netbird/why-wireguard-with-netbird&quot;&gt;Kernel WireGuard&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://github.com/netbirdio/dashboard&quot;&gt;Admin Web UI&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/installation#running-net-bird-with-sso-login&quot;&gt;SSO &amp;amp; MFA support&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/api&quot;&gt;Public API&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/linux&quot;&gt;Linux&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/about-netbird/how-netbird-works&quot;&gt;Peer-to-peer connections&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ Auto peer discovery and configuration&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/manage-network-access&quot;&gt;Access control: groups &amp;amp; rules&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/register-machines-using-setup-keys&quot;&gt;Setup keys for bulk provisioning&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/macos&quot;&gt;macOS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ Connection relay fallback&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/selfhosted/identity-providers&quot;&gt;IdP integrations&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/audit-events-logging&quot;&gt;Activity logging&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/selfhosted/selfhosted-quickstart&quot;&gt;Self-hosting quickstart script&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/windows&quot;&gt;Windows&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/routing-traffic-to-private-networks&quot;&gt;Routes to external networks&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/manage-dns-in-your-network&quot;&gt;Private DNS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/activity/traffic-events-logging&quot;&gt;Traffic events&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/team/idp-sync&quot;&gt;IdP groups sync with JWT&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/android&quot;&gt;Android&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/dns/dns-aliases-for-routed-networks&quot;&gt;Domain-based DNS routes&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/dns/custom-zones&quot;&gt;Custom DNS zones&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/manage-posture-checks&quot;&gt;Device posture checks&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://registry.terraform.io/providers/netbirdio/netbird/latest&quot;&gt;Terraform provider&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/android-tv&quot;&gt;Android TV&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/network-routes/use-cases/exit-nodes&quot;&gt;Exit nodes&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/add-users-to-your-network&quot;&gt;Multiuser support&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ Peer-to-peer encryption&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://github.com/netbirdio/ansible-netbird&quot;&gt;Ansible collection&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/ios&quot;&gt;iOS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/settings/ipv6&quot;&gt;IPv6 dual-stack overlay&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/client/profiles&quot;&gt;Multi-account profile switching&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/peers/ssh&quot;&gt;SSH with central access policies&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/tvos&quot;&gt;Apple TV&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/peers/browser-client&quot;&gt;Browser SSH &amp;amp; RDP&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://netbird.io/knowledge-hub/the-first-quantum-resistant-mesh-vpn&quot;&gt;Quantum-resistance with Rosenpass&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ FreeBSD&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/manage/reverse-proxy&quot;&gt;Reverse proxy with auto-TLS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/enforce-periodic-user-authentication&quot;&gt;Periodic re-authentication&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/pfsense&quot;&gt;pfSense&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/opnsense&quot;&gt;OPNsense&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/use-cases/homelab/client-on-mikrotik-router&quot;&gt;MikroTik RouterOS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ OpenWRT&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/synology&quot;&gt;Synology&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/truenas&quot;&gt;TrueNAS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/proxmox-ve&quot;&gt;Proxmox&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/raspberrypi&quot;&gt;Raspberry Pi&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/how-to/netbird-on-faas&quot;&gt;Serverless&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;✓ &lt;a href=&quot;https://docs.netbird.io/get-started/install/docker&quot;&gt;Container&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Quickstart with NetBird Cloud&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download and install NetBird at &lt;a href=&quot;https://app.netbird.io/install&quot;&gt;https://app.netbird.io/install&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Follow the steps to sign up with Google, Microsoft, GitHub or your email address.&lt;/li&gt; 
 &lt;li&gt;Check the NetBird &lt;a href=&quot;https://app.netbird.io/&quot;&gt;admin UI&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Quickstart with self-hosted NetBird&lt;/h3&gt; 
&lt;p&gt;This is the quickest way to try self-hosted NetBird. It should take around 5 minutes to get started if you already have a public domain and a VM. Follow the &lt;a href=&quot;https://docs.netbird.io/selfhosted/selfhosted-guide#advanced-guide-with-a-custom-identity-provider&quot;&gt;Advanced guide with a custom identity provider&lt;/a&gt; for installations with different IdPs.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Infrastructure requirements:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;A Linux VM with at least &lt;strong&gt;1 CPU&lt;/strong&gt; and &lt;strong&gt;2 GB&lt;/strong&gt; of memory.&lt;/li&gt; 
 &lt;li&gt;The VM should be publicly accessible on TCP ports &lt;strong&gt;80&lt;/strong&gt; and &lt;strong&gt;443&lt;/strong&gt; and UDP port &lt;strong&gt;3478&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;A &lt;strong&gt;public domain&lt;/strong&gt; name pointing to the VM.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Software requirements:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Docker with the Compose plugin (Compose v2 or higher). See the &lt;a href=&quot;https://docs.docker.com/engine/install/&quot;&gt;Docker installation guide&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download and run the installation script:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export NETBIRD_DOMAIN=netbird.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;A bit on NetBird internals&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Every machine in the network runs the &lt;a href=&quot;https://raw.githubusercontent.com/netbirdio/netbird/main/client/&quot;&gt;NetBird agent&lt;/a&gt;, which manages WireGuard.&lt;/li&gt; 
 &lt;li&gt;Every agent connects to the &lt;a href=&quot;https://raw.githubusercontent.com/netbirdio/netbird/main/management/&quot;&gt;Management Service&lt;/a&gt;, which holds network state, manages peer IPs, and distributes updates to agents.&lt;/li&gt; 
 &lt;li&gt;Agents use ICE (via &lt;a href=&quot;https://github.com/pion/ice&quot;&gt;pion/ice&lt;/a&gt;) to discover connection candidates for peer-to-peer connections.&lt;/li&gt; 
 &lt;li&gt;Candidates are discovered with the help of &lt;a href=&quot;https://en.wikipedia.org/wiki/STUN&quot;&gt;STUN&lt;/a&gt; servers.&lt;/li&gt; 
 &lt;li&gt;Agents negotiate a connection through the &lt;a href=&quot;https://raw.githubusercontent.com/netbirdio/netbird/main/signal/&quot;&gt;Signal Service&lt;/a&gt;, exchanging end-to-end encrypted messages with candidates.&lt;/li&gt; 
 &lt;li&gt;When NAT traversal fails (e.g. mobile carrier-grade NAT) and a direct p2p connection isn&#39;t possible, the system falls back to a &lt;a href=&quot;https://raw.githubusercontent.com/netbirdio/netbird/main/relay/&quot;&gt;Relay Service&lt;/a&gt; and a secure WireGuard tunnel is established through it.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p float=&quot;left&quot; align=&quot;middle&quot;&gt; &lt;img src=&quot;https://docs.netbird.io/docs-static/img/about-netbird/high-level-dia.png&quot; width=&quot;700&quot; alt=&quot;NetBird high-level architecture diagram&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;See a complete &lt;a href=&quot;https://docs.netbird.io/about-netbird/how-netbird-works#architecture&quot;&gt;architecture overview&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h3&gt;Community projects&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/physk/netbird-installer&quot;&gt;NetBird installer script&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/n0pashkov/netbird-tui&quot;&gt;netbird-tui&lt;/a&gt; - terminal UI for managing NetBird peers, routes, and settings&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lixmal/caddy-netbird&quot;&gt;caddy-netbird&lt;/a&gt; - Caddy plugin that embeds a NetBird client for proxying HTTP and TCP/UDP traffic through NetBird networks&lt;/li&gt; 
&lt;/ul&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/netbirdio/netbird/releases&quot;&gt;releases&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Support acknowledgement&lt;/h3&gt; 
&lt;p&gt;In November 2022, NetBird joined the &lt;a href=&quot;https://www.forschung-it-sicherheit-kommunikationssysteme.de/foerderung/bekanntmachungen/startup-secure&quot;&gt;StartUpSecure program&lt;/a&gt; sponsored by the Federal Ministry of Education and Research of the Federal Republic of Germany. Together with the &lt;a href=&quot;https://cispa.de/en&quot;&gt;CISPA Helmholtz Center for Information Security&lt;/a&gt;, NetBird brings security best practices and simplicity to private networking.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/700848/203091324-c6d311a0-22b5-4b05-a288-91cbc6cdcc46.png&quot; alt=&quot;CISPA_Logo_BLACK_EN_RZ_RGB (1)&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Acknowledgements&lt;/h3&gt; 
&lt;p&gt;We build on open source technologies like &lt;a href=&quot;https://www.wireguard.com/&quot;&gt;WireGuard®&lt;/a&gt;, &lt;a href=&quot;https://github.com/pion/ice&quot;&gt;Pion ICE&lt;/a&gt;, and &lt;a href=&quot;https://rosenpass.eu&quot;&gt;Rosenpass&lt;/a&gt;. We greatly appreciate the work these projects are doing, and we&#39;d love it if you could support them too (e.g., by starring or contributing).&lt;/p&gt; 
&lt;h3&gt;Legal&lt;/h3&gt; 
&lt;p&gt;This repository is licensed under the BSD-3-Clause license, which applies to all parts of the repository except for the directories management/, signal/ and relay/. Those directories are licensed under the GNU Affero General Public License version 3.0 (AGPLv3). See the respective LICENSE files inside each directory.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;WireGuard&lt;/em&gt; and the &lt;em&gt;WireGuard&lt;/em&gt; logo are &lt;a href=&quot;https://www.wireguard.com/trademark-policy/&quot;&gt;registered trademarks&lt;/a&gt; of Jason A. Donenfeld.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>schollz/croc</title>
      <link>https://github.com/schollz/croc</link>
      <description>&lt;p&gt;Easily and securely send things from one computer to another 🐊 📦&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://getcroc.com&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/schollz/croc/main/web/public/croc.jpg&quot; width=&quot;408px&quot; border=&quot;0&quot; alt=&quot;croc&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://github.com/schollz/croc/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/schollz/croc&quot; alt=&quot;Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/schollz/croc/actions/workflows/ci.yml&quot;&gt;&lt;img src=&quot;https://github.com/schollz/croc/actions/workflows/ci.yml/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/sponsors/schollz&quot;&gt;&lt;img alt=&quot;GitHub Sponsors&quot; src=&quot;https://img.shields.io/github/sponsors/schollz&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;This project’s future depends on community support. &lt;a href=&quot;https://github.com/sponsors/schollz&quot;&gt;Become a sponsor today&lt;/a&gt;.&lt;/strong&gt; &lt;/p&gt; 
&lt;h2&gt;About&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;croc&lt;/code&gt; is a tool that allows any two computers to simply and securely transfer files and folders. AFAIK, &lt;em&gt;croc&lt;/em&gt; is the only CLI file-transfer tool that does &lt;strong&gt;all&lt;/strong&gt; of the following:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Allows &lt;strong&gt;any two computers&lt;/strong&gt; to transfer data (using a relay)&lt;/li&gt; 
 &lt;li&gt;Provides &lt;strong&gt;end-to-end encryption&lt;/strong&gt; (using PAKE)&lt;/li&gt; 
 &lt;li&gt;Enables easy &lt;strong&gt;cross-platform&lt;/strong&gt; transfers (Windows, Linux, Mac, &lt;a href=&quot;https://getcroc.com&quot;&gt;Browser&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Allows &lt;strong&gt;multiple file&lt;/strong&gt; transfers&lt;/li&gt; 
 &lt;li&gt;Allows &lt;strong&gt;resuming transfers&lt;/strong&gt; that are interrupted&lt;/li&gt; 
 &lt;li&gt;No need for local server or port-forwarding&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;IPv6-first&lt;/strong&gt; with IPv4 fallback&lt;/li&gt; 
 &lt;li&gt;Can &lt;strong&gt;use a proxy&lt;/strong&gt;, like Tor&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more information about &lt;code&gt;croc&lt;/code&gt;, see &lt;a href=&quot;https://schollz.com/tinker/croc6/&quot;&gt;my blog post&lt;/a&gt; or read a &lt;a href=&quot;https://console.substack.com/p/console-91&quot;&gt;recent interview I did&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/schollz/croc/main/src/install/customization.gif&quot; alt=&quot;Example&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;No-install&lt;/h2&gt; 
&lt;p&gt;You can use croc without installing anything at &lt;a href=&quot;https://getcroc.com&quot;&gt;getcroc.com&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The browser version is fully compatible with the CLI, so you can send and receive files between them.&lt;/p&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;You can download &lt;a href=&quot;https://github.com/schollz/croc/releases/latest&quot;&gt;the latest release for your system&lt;/a&gt;, or install a release from the command-line:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl https://getcroc.com | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On macOS&lt;/h3&gt; 
&lt;p&gt;Using &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Using &lt;a href=&quot;https://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo port selfupdate
sudo port install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Windows&lt;/h3&gt; 
&lt;p&gt;You can install the latest release with &lt;a href=&quot;https://scoop.sh/&quot;&gt;Scoop&lt;/a&gt;, &lt;a href=&quot;https://chocolatey.org/&quot;&gt;Chocolatey&lt;/a&gt;, or &lt;a href=&quot;https://learn.microsoft.com/windows/package-manager/&quot;&gt;Winget&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;scoop install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;choco install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;winget install schollz.croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Using nix-env&lt;/h3&gt; 
&lt;p&gt;You can install the latest release with &lt;a href=&quot;https://nixos.org/&quot;&gt;Nix&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nix-env -i croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On NixOS&lt;/h3&gt; 
&lt;p&gt;You can add this to your &lt;a href=&quot;https://nixos.org/manual/nixos/stable/#ch-configuration&quot;&gt;configuration.nix&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-nix&quot;&gt;environment.systemPackages = [
  pkgs.croc
];
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Alpine Linux&lt;/h3&gt; 
&lt;p&gt;First, install dependencies:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;apk add bash coreutils
wget -qO- https://getcroc.com | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Debian&lt;/h3&gt; 
&lt;p&gt;Install from the pkg.haus APT archive:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Add the repository (see https://pkg.haus for setup instructions)
sudo apt install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Arch Linux&lt;/h3&gt; 
&lt;p&gt;Install with &lt;code&gt;pacman&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pacman -S croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Fedora&lt;/h3&gt; 
&lt;p&gt;Install with &lt;code&gt;dnf&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;dnf install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Gentoo&lt;/h3&gt; 
&lt;p&gt;Install with &lt;code&gt;portage&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;emerge net-misc/croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Termux&lt;/h3&gt; 
&lt;p&gt;Install with &lt;code&gt;pkg&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pkg install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On FreeBSD&lt;/h3&gt; 
&lt;p&gt;Install with &lt;code&gt;pkg&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pkg install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Linux, macOS, and Windows via Conda&lt;/h3&gt; 
&lt;p&gt;You can install from &lt;a href=&quot;https://github.com/conda-forge/croc-feedstock&quot;&gt;conda-forge&lt;/a&gt; globally with &lt;a href=&quot;https://pixi.sh/&quot;&gt;&lt;code&gt;pixi&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pixi global install croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or install into a particular environment with &lt;a href=&quot;https://docs.conda.io/projects/conda/&quot;&gt;&lt;code&gt;conda&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;conda install --channel conda-forge croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Linux, macOS via Docker&lt;/h3&gt; 
&lt;p&gt;Add the following one-liner function to your ~/.profile (works with any POSIX-compliant shell):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc() { [ $# -eq 0 ] &amp;amp;&amp;amp; set -- &quot;&quot;; mkdir -p &quot;$HOME/.config/croc&quot;; docker run --rm -it --user &quot;$(id -u):$(id -g)&quot; -v &quot;$(pwd):/c&quot; -v &quot;$HOME/.config/croc:/.config/croc&quot; -w /c -e CROC_SECRET docker.io/schollz/croc &quot;$@&quot;; }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can also just paste it in the terminal for current session. On first run Docker will pull the image. &lt;code&gt;croc&lt;/code&gt; via Docker will only work within the current directory and its subdirectories.&lt;/p&gt; 
&lt;h3&gt;Build from Source&lt;/h3&gt; 
&lt;p&gt;If you prefer, you can &lt;a href=&quot;https://go.dev/dl/&quot;&gt;install Go&lt;/a&gt; and build from source (requires Go 1.26+):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go install github.com/schollz/croc/v11@latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;On Android&lt;/h3&gt; 
&lt;p&gt;There are F-Droid apps available:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://f-droid.org/packages/com.github.howeyc.crocgui/&quot;&gt;crocgui&lt;/a&gt; — original port (Go, basic UI)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://f-droid.org/en/packages/com.dking.crocapp/&quot;&gt;croc-app&lt;/a&gt; — native Kotlin/Jetpack Compose client with a modern, mobile-first interface&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/576576/FlCroc&quot;&gt;FlCroc&lt;/a&gt; — cross-platform Flutter GUI (Android, Windows, Linux) that wraps the &lt;code&gt;croc&lt;/code&gt; binary as its transfer core.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;On Desktop&lt;/h3&gt; 
&lt;p&gt;Community made desktop apps:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/interfluve-wav/croc-gui&quot;&gt;Croc GUI&lt;/a&gt; — unofficial desktop GUI for macOS, Windows, and Linux that bundles the &lt;code&gt;croc&lt;/code&gt; binary for drag-and-drop transfers, QR codes, LAN mode, and relay/proxy options.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/SihanTeng/croc-desktop&quot;&gt;croc-desktop&lt;/a&gt; — unofficial desktop GUI for Linux, macOS, and Windows (experimental iOS/Android) built with Wails v3; embeds croc in-process for send/receive, QR codes, history, logs, and optional relay hosting.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Ferase/SwampSwap&quot;&gt;Swamp Swap&lt;/a&gt; — unofficial PyQt6 GUI desktop app for macOS, Windows, and Linux, requires installing &lt;code&gt;croc&lt;/code&gt; on its own normally in order to use. Made to be compact and simple.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;To send a file, simply do:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ croc send [file(s)-or-folder]
Sending &#39;file-or-folder&#39; (X MB)
Code is: code-phrase
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then, to receive the file (or folder) on another computer, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc code-phrase
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The code phrase is used to establish password-authenticated key agreement (&lt;a href=&quot;https://en.wikipedia.org/wiki/Password-authenticated_key_agreement&quot;&gt;PAKE&lt;/a&gt;) which generates a secret key for the sender and recipient to use for end-to-end encryption.&lt;/p&gt; 
&lt;h3&gt;Customizations &amp;amp; Options&lt;/h3&gt; 
&lt;h4&gt;Encrypted temporary storage&lt;/h4&gt; 
&lt;p&gt;When an immediate peer-to-peer transfer is inconvenient, &lt;code&gt;croc&lt;/code&gt; can upload regular files as client-side encrypted ciphertext:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --store [file1] [file2]
croc send --store --store-downloads 3 [file1] [file2]
croc send --store --store-expiration 3d [file1] [file2]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The command prints a browser link and a CLI token. The transfer expires after the selected lifetime, measured from successful upload completion, or after its configured number of receivers download, authenticate, and verify every file—whichever happens first. The lifetime defaults to one day and accepts whole minutes (&lt;code&gt;m&lt;/code&gt;), hours (&lt;code&gt;h&lt;/code&gt;), days (&lt;code&gt;d&lt;/code&gt;), or weeks (&lt;code&gt;w&lt;/code&gt;). The download limit defaults to one. Both values are subject to server policy. Run &lt;code&gt;croc&lt;/code&gt; with no arguments and paste the token at the prompt to receive it. For automation, keep the token out of the process list:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CROC_STORE_TOKEN=&#39;croc-store-v1....&#39; croc --out ./downloads
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The browser link has the form &lt;code&gt;https://host/s/id#v1.decryption-key&lt;/code&gt;. The decryption key is after &lt;code&gt;#&lt;/code&gt; because URL fragments are not included in HTTP requests, so the storage service gets the opaque transfer ID but not the key. The full link is still a secret: anyone who has it can decrypt the files and claim one of the allowed downloads.&lt;/p&gt; 
&lt;p&gt;While a transfer remains available, its sender can delete it with the locally saved revoke receipt:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --revoke [transfer-id]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Stored mode is opt-in and separate from croc&#39;s normal live relay transfers. A self-hosted service can be selected with &lt;code&gt;--store-url&lt;/code&gt; or &lt;code&gt;CROC_STORE_URL&lt;/code&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/schollz/croc/main/src/docs/STORED_TRANSFERS.md&quot;&gt;the stored-transfer design and operator guide&lt;/a&gt; for protocol, privacy, limits, and deployment details.&lt;/p&gt; 
&lt;h4&gt;Using &lt;code&gt;croc&lt;/code&gt; on Linux or macOS&lt;/h4&gt; 
&lt;p&gt;On Linux and macOS, the sending and receiving process is slightly different to avoid &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2023-43621&quot;&gt;leaking the secret via the process name&lt;/a&gt;. You will need to run &lt;code&gt;croc&lt;/code&gt; with the secret as an environment variable. For example, to receive with the secret &lt;code&gt;***&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CROC_SECRET=*** croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For single-user systems, the default behavior can be permanently enabled by running:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --classic
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Custom Code Phrase&lt;/h4&gt; 
&lt;p&gt;You can send with your own code phrase (must be at least 6 characters):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --code [code-phrase] [file(s)-or-folder]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Allow Overwriting Without Prompt&lt;/h4&gt; 
&lt;p&gt;To automatically overwrite files without prompting, use the &lt;code&gt;--overwrite&lt;/code&gt; flag:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --yes --overwrite &amp;lt;code&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Keep Both Files Without Prompt&lt;/h4&gt; 
&lt;p&gt;To keep an existing file and receive the incoming one under a new name (e.g. &lt;code&gt;video (1).mkv&lt;/code&gt;), use the &lt;code&gt;--rename&lt;/code&gt; flag:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --yes --rename &amp;lt;code&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Excluding Folders&lt;/h4&gt; 
&lt;p&gt;To exclude folders from being sent, use the &lt;code&gt;--exclude&lt;/code&gt; flag with comma-delimited exclusions. This does a case-insensitive &lt;strong&gt;substring&lt;/strong&gt; match against each file&#39;s relative path, so any path containing one of the given strings anywhere is excluded:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --exclude &quot;node_modules,.venv&quot; [folder]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you need to exclude one specific file rather than every path containing a substring (for example, two files share a name at different depths and only one should be excluded), use &lt;code&gt;--exclude-file&lt;/code&gt; instead. It takes comma-delimited relative paths and matches them &lt;strong&gt;exactly&lt;/strong&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --exclude-file &quot;subfolder/image.jpg&quot; [folder]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Use Pipes - stdin and stdout&lt;/h4&gt; 
&lt;p&gt;You can pipe to &lt;code&gt;croc&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat [filename] | croc send
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To receive the file to &lt;code&gt;stdout&lt;/code&gt;, you can use:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --yes [code-phrase] &amp;gt; out
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Send Text&lt;/h4&gt; 
&lt;p&gt;To send URLs or short text, use:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --text &quot;hello world&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Send Multiple Files&lt;/h4&gt; 
&lt;p&gt;You can send multiple files directly by listing the files and/or folders:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send [file1] [file2] [file3] [folder1] [folder2]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Show QR Code&lt;/h4&gt; 
&lt;p&gt;To show QR code (for mobile devices), use:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --qr [file(s)-or-folder]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The QR code opens &lt;code&gt;https://getcroc.com/?code=...&lt;/code&gt;, where the web client automatically connects in receive-only mode.&lt;/p&gt; 
&lt;h4&gt;Use a Proxy&lt;/h4&gt; 
&lt;p&gt;You can send files via a proxy by adding &lt;code&gt;--socks5&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --socks5 &quot;127.0.0.1:9050&quot; send SOMEFILE
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Change Encryption Curve&lt;/h4&gt; 
&lt;p&gt;To choose a different elliptic curve for encryption, use the &lt;code&gt;--curve&lt;/code&gt; flag:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --curve p521 &amp;lt;codephrase&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Change Hash Algorithm&lt;/h4&gt; 
&lt;p&gt;For faster hashing, use the &lt;code&gt;imohash&lt;/code&gt; algorithm:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc send --hash imohash SOMEFILE
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Clipboard Options&lt;/h4&gt; 
&lt;p&gt;By default, the code phrase is copied to your clipboard. To disable this:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --disable-clipboard send [filename]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To copy the full command with the secret as an environment variable (useful on Linux/macOS):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --extended-clipboard send [filename]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This copies the full command like &lt;code&gt;CROC_SECRET=&quot;code-phrase&quot; croc&lt;/code&gt; (including any relay/pass flags).&lt;/p&gt; 
&lt;h4&gt;Quiet Mode&lt;/h4&gt; 
&lt;p&gt;To suppress all output (useful for scripts and automation):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --quiet send [filename]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Self-host Relay&lt;/h4&gt; 
&lt;p&gt;You can run your own relay:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc relay
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;By default, it uses TCP ports 9009-9013. You can customize the ports (e.g., &lt;code&gt;croc relay --ports 1111,1112&lt;/code&gt;), but at least &lt;strong&gt;2&lt;/strong&gt; ports are required.&lt;/p&gt; 
&lt;p&gt;To send files using your relay:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --relay &quot;myrelay.example.com:9009&quot; send [filename]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Self-host Relay with Docker&lt;/h4&gt; 
&lt;p&gt;You can also run a relay with Docker:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d -p 9009-9013:9009-9013 -e CROC_PASS=&#39;YOURPASSWORD&#39; docker.io/schollz/croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To send files using your custom relay:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc --pass YOURPASSWORD --relay &quot;myreal.example.com:9009&quot; send [filename]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To use custom ports, set &lt;code&gt;CROC_PORTS&lt;/code&gt; (comma-separated) or &lt;code&gt;CROC_PORT&lt;/code&gt; (base port):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d -p 9010-9011:9010-9011 -e CROC_PORTS=&#39;9010,9011&#39; -e CROC_PASS=&#39;YOURPASSWORD&#39; docker.io/schollz/croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Web client&lt;/h4&gt; 
&lt;p&gt;The React/Vite client in &lt;a href=&quot;https://raw.githubusercontent.com/schollz/croc/main/web/&quot;&gt;&lt;code&gt;web/&lt;/code&gt;&lt;/a&gt; can send and receive multiple files with normal croc CLI peers. The production client and its WebAssembly protocol runtime are bundled only in the standalone &lt;code&gt;croc-web&lt;/code&gt; server, keeping generated assets and web-server code out of the cross-platform &lt;code&gt;croc&lt;/code&gt; binary. Linux amd64 builds of &lt;code&gt;croc-web&lt;/code&gt; are published separately with each release. It serves both the site and its same-origin WebSocket relay:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;croc-web getcroc.com
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This binds to &lt;code&gt;127.0.0.1:9014&lt;/code&gt; by default for an HTTPS reverse proxy. &lt;code&gt;/&lt;/code&gt; serves the website and &lt;code&gt;/ws&lt;/code&gt; bridges to &lt;code&gt;ipv4.getcroc.com&lt;/code&gt;. For a directly accessible local development server, &lt;code&gt;croc-web localhost:5173&lt;/code&gt; binds and serves on &lt;code&gt;localhost:5173&lt;/code&gt;. Use &lt;code&gt;--bind&lt;/code&gt;, &lt;code&gt;--relay&lt;/code&gt;, and &lt;code&gt;--ports&lt;/code&gt; before the website address to customize the local listener or upstream croc relay.&lt;/p&gt; 
&lt;p&gt;Run &lt;code&gt;make build-web&lt;/code&gt; to generate the ignored production assets and build a local server. See &lt;a href=&quot;https://raw.githubusercontent.com/schollz/croc/main/web/README.md&quot;&gt;&lt;code&gt;web/README.md&lt;/code&gt;&lt;/a&gt; for frontend development, custom relay, and reverse-proxy instructions.&lt;/p&gt; 
&lt;h2&gt;Deployment&lt;/h2&gt; 
&lt;h3&gt;Disco&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://disco.cloud/&quot;&gt;Disco&lt;/a&gt; is used to deploy. The root &lt;a href=&quot;https://raw.githubusercontent.com/schollz/croc/main/Dockerfile&quot;&gt;&lt;code&gt;Dockerfile&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/schollz/croc/main/disco.json&quot;&gt;&lt;code&gt;disco.json&lt;/code&gt;&lt;/a&gt; deploy the &lt;code&gt;croc-web&lt;/code&gt; web client and &lt;code&gt;croc&lt;/code&gt; TCP relay as two Disco services built from the same image. Disco serves the website over HTTPS, while relay ports 9009-9017 are published directly as TCP ports.&lt;/p&gt; 
&lt;p&gt;Set the deployment environment variables with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;disco env:set \
  SITE_URL=yoururl.com \
  CROC_RELAY_PORTS=9009,9010,9011,9012,9013,9014,9015,9016,9017 \
  CROC_PASS=yourpass \
  --project croc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;SITE_URL&lt;/code&gt; must be the public website hostname without &lt;code&gt;https://&lt;/code&gt;. Change the project name if it is not &lt;code&gt;croc&lt;/code&gt;. The &lt;code&gt;web&lt;/code&gt; service mounts the named &lt;code&gt;croc-store&lt;/code&gt; volume at &lt;code&gt;/www/croc/storage&lt;/code&gt;, which is also its configured &lt;code&gt;--store-dir&lt;/code&gt;, so stored ciphertext and metadata survive container replacement and redeployment. The &lt;code&gt;web&lt;/code&gt; service also reserves published TCP port 9020 and maps it to unused container port 65535. This deliberate port collision makes Disco stop the previous volume-owning web service before starting its replacement, avoiding concurrent access to the store. Port 9020 carries no application traffic and should remain blocked by the server firewall.&lt;/p&gt; 
&lt;p&gt;The ports in &lt;code&gt;CROC_RELAY_PORTS&lt;/code&gt; must match the &lt;code&gt;publishedPorts&lt;/code&gt; entries in the &lt;code&gt;relay&lt;/code&gt; service in &lt;a href=&quot;https://raw.githubusercontent.com/schollz/croc/main/disco.json&quot;&gt;&lt;code&gt;disco.json&lt;/code&gt;&lt;/a&gt;; do not include the web service&#39;s deployment-only port 9020. Disco cannot generate host port mappings from an environment variable. Make sure the relay TCP ports are also open in the server&#39;s firewall or cloud security group.&lt;/p&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;croc&lt;/code&gt; has evolved through many iterations, and I am thankful for the contributions! Special thanks to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/warner&quot;&gt;@warner&lt;/a&gt; for the &lt;a href=&quot;https://github.com/magic-wormhole/magic-wormhole&quot;&gt;idea&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tscholl2&quot;&gt;@tscholl2&lt;/a&gt; for the &lt;a href=&quot;https://gist.github.com/tscholl2/dc7dc15dc132ea70a98e8542fefffa28&quot;&gt;encryption gists&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/skorokithakis&quot;&gt;@skorokithakis&lt;/a&gt; for &lt;a href=&quot;https://www.stavros.io/posts/proxying-two-connections-go/&quot;&gt;proxying two connections&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;And many more!&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>pranshuparmar/witr</title>
      <link>https://github.com/pranshuparmar/witr</link>
      <description>&lt;p&gt;Why is this running? Trace any process, port, container, or file back to what started it - CLI + TUI.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;witr&lt;/h1&gt; 
 &lt;h3&gt;Why is this running?&lt;/h3&gt; 
 &lt;p&gt;Trace any process, port, container, or file back to the exact chain that started it —&lt;br /&gt; one command, machine-readable JSON, or an &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#3-interactive-mode-tui&quot;&gt;interactive TUI&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/pranshuparmar/witr/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/pranshuparmar/witr?label=Latest%20Release&amp;amp;style=flat-square&quot; alt=&quot;Latest Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#8-platform-support&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/platforms-linux%20%7C%20macos%20%7C%20windows%20%7C%20freebsd-blue?style=flat-square&quot; alt=&quot;Platforms&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://repology.org/project/witr/versions&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Package%20Managers-brew%20%7C%20conda%20%7C%20aur%20%7C%20winget%20%7C%20npm%20%7C%20ports%20%7C%20...%20-blue?style=flat-square&quot; alt=&quot;Package Managers&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/18714&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/18714&quot; alt=&quot;pranshuparmar/witr on Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.producthunt.com/products/witr?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_campaign=badge-witr&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img alt=&quot;witr - Why is this running? Trace process, port, container or file. | Product Hunt&quot; width=&quot;250&quot; height=&quot;54&quot; src=&quot;https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1211309&amp;amp;theme=light&amp;amp;t=1785480480150&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;h3&gt;🎮 &lt;a href=&quot;https://pranshuparmar.github.io/witr/&quot;&gt;&lt;strong&gt;Try witr in your browser →&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt; 
 &lt;p&gt;&lt;em&gt;Investigate a simulated Linux box — a guided tutorial and free-play sandbox, no install required.&lt;/em&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://pranshuparmar.github.io/witr/&quot;&gt;&lt;img width=&quot;1232&quot; alt=&quot;witr&#39;s interactive TUI and CLI answering why a node process is running — the same systemd → PM2 → node chain in both&quot; src=&quot;https://github.com/user-attachments/assets/dbe271ad-25e5-425b-b414-392d0c4eee37&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#1-purpose&quot;&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#2-installation&quot;&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#3-interactive-mode-tui&quot;&gt;&lt;strong&gt;TUI&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#4-flags--options&quot;&gt;&lt;strong&gt;Flags&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#5-core-concept&quot;&gt;&lt;strong&gt;Core Concept&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#6-example-outputs&quot;&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#7-output-behavior&quot;&gt;&lt;strong&gt;Output Behavior&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#8-platform-support&quot;&gt;&lt;strong&gt;Platforms&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#9-success-criteria&quot;&gt;&lt;strong&gt;Success Criteria&lt;/strong&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/pranshuparmar/witr/main/#10-sponsors&quot;&gt;&lt;strong&gt;Sponsors&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;1. Purpose&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;witr&lt;/strong&gt; exists to answer a single question:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Why is this running?&lt;/strong&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;When something is running on a system, whether it is a process, a service, or something bound to a port, there is always a cause. That cause is often indirect, non-obvious, or spread across multiple layers such as supervisors, containers, services, or shells.&lt;/p&gt; 
&lt;p&gt;Existing tools (&lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;top&lt;/code&gt;, &lt;code&gt;lsof&lt;/code&gt;, &lt;code&gt;ss&lt;/code&gt;, &lt;code&gt;systemctl&lt;/code&gt;, &lt;code&gt;docker ps&lt;/code&gt;) expose state and metadata. They show &lt;em&gt;what&lt;/em&gt; is running, but leave the user to infer &lt;em&gt;why&lt;/em&gt; by manually correlating outputs across tools.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;witr&lt;/strong&gt; makes that causality explicit.&lt;/p&gt; 
&lt;p&gt;It explains &lt;strong&gt;where a running thing came from&lt;/strong&gt;, &lt;strong&gt;how it was started&lt;/strong&gt;, and &lt;strong&gt;what chain of systems is responsible for it existing right now&lt;/strong&gt;, in a single, human-readable output or an &lt;strong&gt;interactive TUI dashboard&lt;/strong&gt;.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;📖 Curious how witr came to be? &lt;a href=&quot;https://medium.com/@pranshu.parmar/witr-why-is-this-running-a9a97cbedd18&quot;&gt;Read the story&lt;/a&gt; or browse the &lt;a href=&quot;https://news.ycombinator.com/item?id=46392910&quot;&gt;Hacker News discussion&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;2. Installation&lt;/h2&gt; 
&lt;p&gt;witr is distributed as a single static binary for Linux, macOS, FreeBSD, and Windows.&lt;/p&gt; 
&lt;p&gt;witr is also independently packaged and maintained across multiple operating systems and ecosystems. An up-to-date overview of packaging status is available on &lt;a href=&quot;https://repology.org/project/witr/versions&quot;&gt;Repology&lt;/a&gt;. Please note that community packages may lag GitHub releases due to independent review and validation.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;If you use a package manager (Homebrew, Conda, Winget, etc.), we recommend installing via that for easier updates. Otherwise, the install script is the quickest way to get started.&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h3&gt;2.1 Quick Install&lt;/h3&gt; 
&lt;h4&gt;Unix (Linux, macOS &amp;amp; FreeBSD)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;details&gt; 
 &lt;summary&gt;Script Details&lt;/summary&gt; 
 &lt;p&gt;The script will:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Detect your operating system (&lt;code&gt;linux&lt;/code&gt;, &lt;code&gt;darwin&lt;/code&gt; or &lt;code&gt;freebsd&lt;/code&gt;)&lt;/li&gt; 
  &lt;li&gt;Detect your CPU architecture (&lt;code&gt;amd64&lt;/code&gt; or &lt;code&gt;arm64&lt;/code&gt;)&lt;/li&gt; 
  &lt;li&gt;Download the latest released binary and man page&lt;/li&gt; 
  &lt;li&gt;Install it to &lt;code&gt;/usr/local/bin/witr&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Install the man page to &lt;code&gt;/usr/local/share/man/man1/witr.1&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Pass INSTALL_PREFIX to override default install path&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h4&gt;Windows (PowerShell)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm https://raw.githubusercontent.com/pranshuparmar/witr/main/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;details&gt; 
 &lt;summary&gt;Script Details&lt;/summary&gt; 
 &lt;p&gt;The script will:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Download the latest release (zip) and verify checksum.&lt;/li&gt; 
  &lt;li&gt;Extract &lt;code&gt;witr.exe&lt;/code&gt; to &lt;code&gt;%LocalAppData%\witr\bin&lt;/code&gt;.&lt;/li&gt; 
  &lt;li&gt;Add the bin directory to your User &lt;code&gt;PATH&lt;/code&gt;.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h3&gt;2.2 Package Managers&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;APT (Debian, Ubuntu &amp;amp; Derivatives)&lt;/strong&gt; &lt;a href=&quot;https://packages.debian.org/sid/witr&quot;&gt;&lt;img src=&quot;https://repology.org/badge/version-for-repo/debian_unstable/witr.svg?style=flat-square&quot; alt=&quot;Debian&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; from the official Debian and Ubuntu repositories (Ubuntu 26.04+, Debian sid and later), as well as derivative distributions like Kali Linux, Devuan, and Raspbian:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt install witr
&lt;/code&gt;&lt;/pre&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;Note: The apt-shipped version may lag the latest GitHub release. For the newest features, use the install script or another installation method.&lt;/p&gt; 
 &lt;/blockquote&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Homebrew (macOS &amp;amp; Linux)&lt;/strong&gt; &lt;a href=&quot;https://formulae.brew.sh/formula/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/homebrew/v/witr?style=flat-square&quot; alt=&quot;Homebrew&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; on macOS or Linux:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;MacPorts (macOS)&lt;/strong&gt; &lt;a href=&quot;https://ports.macports.org/port/witr/&quot;&gt;&lt;img src=&quot;https://repology.org/badge/version-for-repo/macports/witr.svg?style=flat-square&quot; alt=&quot;MacPorts&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt; on macOS:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo port install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Conda (macOS, Linux &amp;amp; Windows)&lt;/strong&gt; &lt;a href=&quot;https://anaconda.org/conda-forge/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/conda/vn/conda-forge/witr?style=flat-square&quot; alt=&quot;Conda&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://docs.conda.io/en/latest/&quot;&gt;conda&lt;/a&gt;, &lt;a href=&quot;https://mamba.readthedocs.io/en/latest/&quot;&gt;mamba&lt;/a&gt;, or &lt;a href=&quot;https://pixi.prefix.dev/latest/&quot;&gt;pixi&lt;/a&gt; on macOS, Linux, and Windows:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;conda install -c conda-forge witr
# alternatively using mamba
mamba install -c conda-forge witr
# alternatively using pixi
pixi global install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Arch Linux (AUR)&lt;/strong&gt; &lt;a href=&quot;https://aur.archlinux.org/packages/witr-bin&quot;&gt;&lt;img src=&quot;https://img.shields.io/aur/version/witr-bin?style=flat-square&quot; alt=&quot;AUR&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;On Arch Linux and derivatives, install from the &lt;a href=&quot;https://aur.archlinux.org/packages/witr-bin&quot;&gt;AUR package&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;yay -S witr-bin
# alternatively using paru
paru -S witr-bin
# or use your preferred AUR helper
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Winget (Windows)&lt;/strong&gt; &lt;a href=&quot;https://winstall.app/apps/PranshuParmar.witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/winget/v/PranshuParmar.witr?style=flat-square&quot; alt=&quot;Winget&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; via &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/package-manager/winget/&quot;&gt;winget&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;winget install -e --id PranshuParmar.witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;NPM (Cross-platform)&lt;/strong&gt; &lt;a href=&quot;https://www.npmjs.com/package/@pranshuparmar/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@pranshuparmar/witr?label=npm&amp;amp;color=blue&amp;amp;style=flat-square&quot; alt=&quot;NPM&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://www.npmjs.com/package/@pranshuparmar/witr&quot;&gt;npm&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g @pranshuparmar/witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;FreeBSD Ports&lt;/strong&gt; &lt;a href=&quot;https://www.freshports.org/sysutils/witr/&quot;&gt;&lt;img src=&quot;https://repology.org/badge/version-for-repo/freebsd/witr.svg?style=flat-square&quot; alt=&quot;FreeBSD Port&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; on FreeBSD from the &lt;a href=&quot;https://www.freshports.org/sysutils/witr/&quot;&gt;FreshPorts port&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pkg install witr
# or
pkg install sysutils/witr
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Or build from Ports:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /usr/ports/sysutils/witr/
make install clean
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Chocolatey (Windows)&lt;/strong&gt; &lt;a href=&quot;https://community.chocolatey.org/packages/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/chocolatey/v/witr?style=flat-square&quot; alt=&quot;Chocolatey&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://community.chocolatey.org&quot;&gt;Chocolatey&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;choco install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Scoop (Windows)&lt;/strong&gt; &lt;a href=&quot;https://scoop.sh/#/apps?q=witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/scoop/v/witr?bucket=main&amp;amp;style=flat-square&quot; alt=&quot;Scoop&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://scoop.sh&quot;&gt;Scoop&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;scoop install main/witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;AOSC OS&lt;/strong&gt; &lt;a href=&quot;https://packages.aosc.io/packages/witr&quot;&gt;&lt;img src=&quot;https://repology.org/badge/version-for-repo/aosc/witr.svg?style=flat-square&quot; alt=&quot;AOSC OS&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; from the &lt;a href=&quot;https://packages.aosc.io/packages/witr&quot;&gt;AOSC OS repository&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;oma install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;GNU Guix&lt;/strong&gt; &lt;a href=&quot;https://packages.guix.gnu.org/packages/witr/&quot;&gt;&lt;img src=&quot;https://repology.org/badge/version-for-repo/gnuguix/witr.svg?style=flat-square&quot; alt=&quot;GNU Guix&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; from the &lt;a href=&quot;https://packages.guix.gnu.org/packages/witr/&quot;&gt;GNU Guix repository&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;guix install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Uniget (Linux)&lt;/strong&gt; &lt;a href=&quot;https://github.com/uniget-org/tools/tree/main/tools/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Funiget-org%2Ftools%2Fmain%2Ftools%2Fwitr%2Fmanifest.yaml&amp;amp;query=%24.version&amp;amp;label=uniget&amp;amp;style=flat-square&amp;amp;color=blue&quot; alt=&quot;Uniget&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://uniget.dev/&quot;&gt;uniget&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;uniget install witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Aqua (macOS, Linux &amp;amp; Windows)&lt;/strong&gt; &lt;a href=&quot;https://github.com/aquaproj/aqua-registry/raw/main/pkgs/pranshuparmar/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/yaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Faquaproj%2Faqua-registry%2Fmain%2Fpkgs%2Fpranshuparmar%2Fwitr%2Fpkg.yaml&amp;amp;query=%24.packages%5B0%5D.name&amp;amp;label=aqua&amp;amp;style=flat-square&amp;amp;color=blue&quot; alt=&quot;Aqua&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://aquaproj.github.io/&quot;&gt;aqua&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Add package
aqua g -i pranshuparmar/witr

# Install package
aqua i pranshuparmar/witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Brioche (Linux)&lt;/strong&gt; &lt;a href=&quot;https://github.com/brioche-dev/brioche-packages/tree/main/packages/witr&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1?label=brioche&amp;amp;message=v0.3.3&amp;amp;color=blue&amp;amp;style=flat-square&quot; alt=&quot;Brioche&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://brioche.dev/&quot;&gt;brioche&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brioche install -r witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Mise (macOS, Linux &amp;amp; Windows)&lt;/strong&gt; &lt;a href=&quot;https://github.com/pranshuparmar/witr/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/pranshuparmar/witr?label=mise&amp;amp;style=flat-square&quot; alt=&quot;Mise&quot; /&gt;&lt;/a&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install &lt;strong&gt;witr&lt;/strong&gt; using &lt;a href=&quot;https://mise.jdx.dev/&quot;&gt;mise&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mise use github:pranshuparmar/witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Prebuilt Packages (deb, rpm, apk)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;strong&gt;witr&lt;/strong&gt; provides native packages for major Linux distributions. You can download the latest &lt;code&gt;.deb&lt;/code&gt;, &lt;code&gt;.rpm&lt;/code&gt;, or &lt;code&gt;.apk&lt;/code&gt; package from the &lt;a href=&quot;https://github.com/pranshuparmar/witr/releases/latest&quot;&gt;GitHub releases page&lt;/a&gt;.&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;Generic download command using &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Replace &amp;lt;package name with the actual package that you need&amp;gt;
curl -LO https://github.com/pranshuparmar/witr/releases/latest/download/&amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Debian/Ubuntu (.deb):&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo dpkg -i ./witr-*.deb
# Or, using apt for dependency resolution:
sudo apt install ./witr-*.deb
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Fedora/RHEL/CentOS (.rpm):&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo rpm -i ./witr-*.rpm
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Alpine Linux (.apk):&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apk add --allow-untrusted ./witr-*.apk
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h3&gt;2.3 Source &amp;amp; Manual Installation&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Go (cross-platform)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;You can install the latest version directly from source:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go install github.com/pranshuparmar/witr/cmd/witr@latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;This will place the &lt;code&gt;witr&lt;/code&gt; binary in your &lt;code&gt;$GOPATH/bin&lt;/code&gt; or &lt;code&gt;$HOME/go/bin&lt;/code&gt; directory. Make sure this directory is in your &lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Manual Installation&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;If you prefer manual installation, follow these simple steps for your platform:&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Unix (Linux, macOS, FreeBSD)&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Determine OS and Architecture
OS=$(uname -s | tr &#39;[:upper:]&#39; &#39;[:lower:]&#39;)
ARCH=$(uname -m)
[ &quot;$ARCH&quot; = &quot;x86_64&quot; ] &amp;amp;&amp;amp; ARCH=&quot;amd64&quot;
[ &quot;$ARCH&quot; = &quot;aarch64&quot; ] &amp;amp;&amp;amp; ARCH=&quot;arm64&quot;

# 2. Download the binary
curl -fsSL &quot;https://github.com/pranshuparmar/witr/releases/latest/download/witr-${OS}-${ARCH}&quot; -o witr

# 3. Verify checksum (Optional)
curl -fsSL &quot;https://github.com/pranshuparmar/witr/releases/latest/download/SHA256SUMS&quot; -o SHA256SUMS
grep &quot;witr-${OS}-${ARCH}&quot; SHA256SUMS | (sha256sum -c - 2&amp;gt;/dev/null || shasum -a 256 -c - 2&amp;gt;/dev/null)
rm SHA256SUMS

# 4. Rename and install
chmod +x witr
sudo mkdir -p /usr/local/bin
sudo mv witr /usr/local/bin/witr

# 5. Install man page (Optional)
sudo mkdir -p /usr/local/share/man/man1
sudo curl -fsSL https://github.com/pranshuparmar/witr/releases/latest/download/witr.1 -o /usr/local/share/man/man1/witr.1
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Windows (PowerShell)&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# 1. Determine Architecture
if ($env:PROCESSOR_ARCHITECTURE -eq &quot;AMD64&quot;) {
    $ZipName = &quot;witr-windows-amd64.zip&quot;
} elseif ($env:PROCESSOR_ARCHITECTURE -eq &quot;ARM64&quot;) {
    $ZipName = &quot;witr-windows-arm64.zip&quot;
} else {
    Write-Error &quot;Unsupported architecture: $($env:PROCESSOR_ARCHITECTURE)&quot;
    exit 1
}

# 2. Download the zip
Invoke-WebRequest -Uri &quot;https://github.com/pranshuparmar/witr/releases/latest/download/$ZipName&quot; -OutFile &quot;witr.zip&quot;
# 3. Extract the binary
Expand-Archive -Path &quot;witr.zip&quot; -DestinationPath &quot;.&quot; -Force

# 4. Verify checksum (Optional)
Invoke-WebRequest -Uri &quot;https://github.com/pranshuparmar/witr/releases/latest/download/SHA256SUMS&quot; -OutFile &quot;SHA256SUMS&quot;
$hash = Get-FileHash -Algorithm SHA256 .\witr.zip
$expected = Select-String -Path .\SHA256SUMS -Pattern $ZipName
if ($expected -and $hash.Hash.ToLower() -eq $expected.Line.Split(&#39; &#39;)[0]) { Write-Host &quot;Checksum OK&quot; } else { Write-Host &quot;Checksum Mismatch&quot; }

# 5. Install to local bin directory
$InstallDir = &quot;$env:LocalAppData\witr\bin&quot;
New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null
Move-Item .\witr.exe $InstallDir\witr.exe -Force

# 6. Add to User Path (Persistent)
$UserPath = [Environment]::GetEnvironmentVariable(&quot;Path&quot;, &quot;User&quot;)
if ($UserPath -notlike &quot;*$InstallDir*&quot;) {
    [Environment]::SetEnvironmentVariable(&quot;Path&quot;, &quot;$UserPath;$InstallDir&quot;, &quot;User&quot;)
    $env:Path += &quot;;$InstallDir&quot;
    Write-Host &quot;Added to Path. You may need to restart PowerShell.&quot;
}

# 7. Cleanup
Remove-Item witr.zip
Remove-Item SHA256SUMS
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h3&gt;2.4 Run Without Installation&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Nix Flake&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;If you use Nix, you can build &lt;strong&gt;witr&lt;/strong&gt; from source and run without installation:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nix run github:pranshuparmar/witr -- --help
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Pixi&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;If you use &lt;a href=&quot;https://pixi.prefix.dev/latest/&quot;&gt;pixi&lt;/a&gt;, you can run without installation on Linux or macOS:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pixi exec witr --help
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h3&gt;2.5 Other Operations&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Verify Installation&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr --version
man witr
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Shell Completions&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;code&gt;witr&lt;/code&gt; supports tab completion for all flags. To enable it, add the appropriate line to your shell configuration:&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Bash&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &#39;eval &quot;$(witr completion bash)&quot;&#39; &amp;gt;&amp;gt; ~/.bashrc
source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Zsh&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;echo &#39;eval &quot;$(witr completion zsh)&quot;&#39; &amp;gt;&amp;gt; ~/.zshrc
source ~/.zshrc
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Fish&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-fish&quot;&gt;witr completion fish | source
# To make it permanent:
witr completion fish &amp;gt; ~/.config/fish/completions/witr.fish
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;PowerShell&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;witr completion powershell | Out-String | Invoke-Expression
# To make it permanent, add the above line to your $PROFILE
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Uninstallation&lt;/strong&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;p&gt;If you installed via a package manager (Homebrew, Conda, etc.), please use the respective uninstall command (e.g., &lt;code&gt;brew uninstall witr&lt;/code&gt;).&lt;/p&gt; 
 &lt;p&gt;To completely remove script/manual installation of &lt;strong&gt;witr&lt;/strong&gt;:&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Unix (Linux, macOS, FreeBSD)&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo rm -f /usr/local/bin/witr
sudo rm -f /usr/local/share/man/man1/witr.1
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Remove-Item -Recurse -Force &quot;$env:LocalAppData\witr&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;3. Interactive Mode (TUI)&lt;/h2&gt; 
&lt;p&gt;Running &lt;code&gt;witr&lt;/code&gt; without any arguments or with the &lt;code&gt;-i&lt;/code&gt; flag launches the &lt;strong&gt;Interactive Mode (TUI)&lt;/strong&gt;. This provides a real-time, terminal-based dashboard with four tabs for exploring processes, ports, containers, and file locks.&lt;/p&gt; 
&lt;h3&gt;Key Features:&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Processes Tab&lt;/strong&gt;: Live, sortable, filterable list of all running processes with a side panel showing the ancestry tree of the highlighted process.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Ports Tab&lt;/strong&gt;: Open/listening ports with the owning processes attached in a side panel. Toggle between LISTEN-only and ALL with &lt;code&gt;a&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Containers Tab&lt;/strong&gt;: All running containers across Docker, Podman, nerdctl, K8s/crictl, Incus, LXC, LXD, and FreeBSD jails in one list - name, image, status, ports, command, plus a per-container detail view with mounts, networks, and compose project metadata.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Locks Tab&lt;/strong&gt;: System-wide file locks (POSIX/FLOCK on Linux, lsof-derived on macOS/FreeBSD). Press &lt;code&gt;a&lt;/code&gt; to switch into &quot;all open files&quot; mode, where locked entries are merged with every interesting open fd; type into &lt;code&gt;/&lt;/code&gt; to search across the merged set.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Process Details&lt;/strong&gt;: Deep-dive into a process to see its full ancestry tree, child processes, environment variables, working directory, sockets, file context, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Process Actions&lt;/strong&gt;: Send signals (Kill, Terminate, Pause, Resume) or Renice processes directly from the UI (Unix only).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Mouse Support&lt;/strong&gt;: Navigate, sort columns, and click rows using your mouse.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Adaptive Theme&lt;/strong&gt;: Colors adapt automatically to light and dark terminal backgrounds.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Auto-Refresh&lt;/strong&gt;: The process, port, container, and lock lists refresh automatically on an adaptive cadence (starts at 3 seconds, backing off under load).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;4. Flags &amp;amp; Options&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;  -c, --container strings container(s) to look up (repeatable)
      --env              show environment variables for the process
  -x, --exact            use exact name matching (no substring search)
  -f, --file strings     file(s) held open by a process (repeatable)
  -h, --help             help for witr
  -i, --interactive      interactive mode (TUI)
      --json             show result as JSON
      --no-color         disable colorized output
  -p, --pid strings      pid(s) to look up (repeatable)
  -o, --port strings     port(s) to look up (repeatable)
  -s, --short            show only ancestry
  -t, --tree             show only ancestry as a tree
      --verbose          show extended process information
  -v, --version          version for witr
      --warnings         show only warnings
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Positional arguments (without flags) are treated as process or service names. Multiple names can be passed. By default, name matching uses substring matching (fuzzy search). Use &lt;code&gt;--exact&lt;/code&gt; to match only processes with the exact name.&lt;/p&gt; 
&lt;p&gt;All target flags (&lt;code&gt;--pid&lt;/code&gt;, &lt;code&gt;--port&lt;/code&gt;, &lt;code&gt;--file&lt;/code&gt;, &lt;code&gt;--container&lt;/code&gt;) are repeatable and can be mixed with each other and with positional name arguments. When multiple targets are provided, results are shown sequentially with labeled dividers. All output modes (standard, short, tree, JSON, env, warnings, verbose) work with multiple inputs.&lt;/p&gt; 
&lt;p&gt;The &lt;code&gt;--container&lt;/code&gt; flag searches across Docker, Podman, nerdctl, K8s/crictl, Incus, LXC, LXD, and FreeBSD jails, and matches against container name, image, command, and compose project/service labels.&lt;/p&gt; 
&lt;p&gt;The TUI is launched if no arguments or relevant flags (&lt;code&gt;--pid&lt;/code&gt;, &lt;code&gt;--port&lt;/code&gt;, &lt;code&gt;--file&lt;/code&gt;, &lt;code&gt;--container&lt;/code&gt;) are provided, or if the &lt;code&gt;--interactive&lt;/code&gt; flag is explicitly used.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;5. Core Concept&lt;/h2&gt; 
&lt;p&gt;witr treats &lt;strong&gt;everything as a process question&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;Ports, services, containers, and commands all eventually map to &lt;strong&gt;PIDs&lt;/strong&gt;. Once a PID is identified, witr builds a causal chain explaining &lt;em&gt;why that PID exists&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;At its core, witr answers:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;What is running?&lt;/li&gt; 
 &lt;li&gt;How did it start?&lt;/li&gt; 
 &lt;li&gt;What is keeping it running?&lt;/li&gt; 
 &lt;li&gt;What context does it belong to?&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;6. Example Outputs&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 Prefer learning by doing? The &lt;a href=&quot;https://pranshuparmar.github.io/witr/&quot;&gt;interactive browser tutorial&lt;/a&gt; walks you through outputs like these live on a simulated box — for a better feel of witr, no install required.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;6.1 Name Based Query&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr node
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;Target      : node

Process     : node (pid 14233)
User        : pm2
Command     : node index.js
Started     : 2 days ago (Mon 2025-02-02 11:42:10 +05:30)

Why It Exists :
  systemd (pid 1) → pm2 (pid 5034) → node (pid 14233)

Source      : pm2

Working Dir : /opt/apps/expense-manager
Git Repo    : expense-manager (main)
Sockets     : 127.0.0.1:5001 (TCP | LISTENING)
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6.2 Short Output&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr --port 5000 --short
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;systemd (pid 1) → PM2 v5.3.1: God (pid 1481580) → python (pid 1482060)
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6.3 Tree Output&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr --pid 143895 --tree
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;systemd (pid 1)
  └─ init-systemd(Ub (pid 2)
    └─ SessionLeader (pid 143858)
      └─ Relay(143860) (pid 143859)
        └─ bash (pid 143860)
          └─ sh (pid 143886)
            └─ node (pid 143895)
              ├─ node (pid 143930)
              ├─ node (pid 144189)
              └─ node (pid 144234)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note: &lt;em&gt;Tree view includes child processes (up to 10) and highlights the target process.&lt;/em&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6.4 Multiple Matches&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr ng
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;Multiple matching processes found:

[1] nginx (pid 2311)
    nginx -g daemon off;
[2] nginx (pid 24891)
    nginx -g daemon off;
[3] ngrok (pid 14233)
    ngrok http 5000

Re-run with:
  witr --pid &amp;lt;pid&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To avoid substring matching and only find processes with an exact name, use the &lt;code&gt;--exact&lt;/code&gt; flag:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr nginx -x
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6.5 File Based Query&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr --file /var/lib/dpkg/lock
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Explains the process holding a file open.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6.6 Container Based Query&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr --container redis
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Looks up a container by name, image, command, or compose project/service across every detected runtime (Docker, Podman, nerdctl, K8s/crictl, Incus, LXC, LXD, FreeBSD jails). Pass &lt;code&gt;--verbose&lt;/code&gt; to include mounts, networks, and compose metadata in the output.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;6.7 Multiple Inputs&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr nginx --port 5432 --pid 1234
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;----- [name: nginx] -----
Target      : nginx
Process     : nginx (pid 2311)
...

----- [port: 5432] -----
Target      : postgres
Process     : postgres (pid 891)
...

----- [pid: 1234] -----
Target      : node
Process     : node (pid 1234)
...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;All target flags are repeatable and can be mixed. Results appear in the order you typed them. All output modes (&lt;code&gt;--short&lt;/code&gt;, &lt;code&gt;--tree&lt;/code&gt;, &lt;code&gt;--json&lt;/code&gt;, &lt;code&gt;--env&lt;/code&gt;, &lt;code&gt;--warnings&lt;/code&gt;, &lt;code&gt;--verbose&lt;/code&gt;) work with multiple inputs.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;7. Output Behavior&lt;/h2&gt; 
&lt;h3&gt;7.1 Output Principles&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Single screen by default (best effort)&lt;/li&gt; 
 &lt;li&gt;Deterministic ordering&lt;/li&gt; 
 &lt;li&gt;Narrative-style explanation&lt;/li&gt; 
 &lt;li&gt;Best-effort detection with explicit uncertainty&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;7.2 Exit Codes&lt;/h3&gt; 
&lt;p&gt;witr returns meaningful exit codes for use in scripts, CI pipelines, and monitoring:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Code&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;0&lt;/td&gt; 
   &lt;td&gt;Clean: process found, no warnings&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;1&lt;/td&gt; 
   &lt;td&gt;Warnings: process found but has one or more warnings&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;2&lt;/td&gt; 
   &lt;td&gt;Not found: no matching process or service&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;3&lt;/td&gt; 
   &lt;td&gt;Permission denied: insufficient privileges&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;4&lt;/td&gt; 
   &lt;td&gt;Invalid input: bad arguments or ambiguous match&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;5&lt;/td&gt; 
   &lt;td&gt;Internal error: an unexpected failure occurred&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Example Usage:&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;witr nginx --short
case $? in
  0) echo &quot;All clear&quot; ;;
  1) echo &quot;Warnings detected&quot; ;;
  2) echo &quot;Process not running&quot; ;;
  3) echo &quot;Need elevated privileges&quot; ;;
  4) echo &quot;Invalid input or ambiguous match&quot; ;;
  5) echo &quot;Internal error&quot; ;;
esac
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;7.3 Standard Output Sections&lt;/h3&gt; 
&lt;h4&gt;Target&lt;/h4&gt; 
&lt;p&gt;What the user asked about.&lt;/p&gt; 
&lt;h4&gt;Process&lt;/h4&gt; 
&lt;p&gt;Executable, PID, user, command, start time and restart count.&lt;/p&gt; 
&lt;h4&gt;Why It Exists&lt;/h4&gt; 
&lt;p&gt;A causal ancestry chain showing how the process came to exist. This is the core value of witr.&lt;/p&gt; 
&lt;h4&gt;Source&lt;/h4&gt; 
&lt;p&gt;The primary system responsible for starting or supervising the process (best effort).&lt;/p&gt; 
&lt;p&gt;Examples:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;systemd unit with schedule info for timer-triggered services (Linux)&lt;/li&gt; 
 &lt;li&gt;launchd service with schedule/trigger details (macOS)&lt;/li&gt; 
 &lt;li&gt;SSH session (with remote IP and terminal)&lt;/li&gt; 
 &lt;li&gt;docker container&lt;/li&gt; 
 &lt;li&gt;pm2&lt;/li&gt; 
 &lt;li&gt;cron&lt;/li&gt; 
 &lt;li&gt;interactive shell (detects tmux/screen sessions)&lt;/li&gt; 
 &lt;li&gt;Snap/Flatpak sandbox (Linux)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Only &lt;strong&gt;one primary source&lt;/strong&gt; is selected.&lt;/p&gt; 
&lt;h4&gt;Context (best effort)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Working directory&lt;/li&gt; 
 &lt;li&gt;Git repository name and branch&lt;/li&gt; 
 &lt;li&gt;Container name / image (docker, podman, kubernetes, colima, containerd)&lt;/li&gt; 
 &lt;li&gt;Public vs private bind&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Warnings&lt;/h4&gt; 
&lt;p&gt;Non‑blocking observations such as:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Process is running as root&lt;/li&gt; 
 &lt;li&gt;Dangerous Linux capabilities on non-root processes (CAP_SYS_ADMIN, etc.)&lt;/li&gt; 
 &lt;li&gt;Process is listening on a public interface (0.0.0.0 / :😃&lt;/li&gt; 
 &lt;li&gt;Restarted multiple times (warning only if above threshold)&lt;/li&gt; 
 &lt;li&gt;Process is using high memory (&amp;gt;1GB RSS)&lt;/li&gt; 
 &lt;li&gt;Process has been running for over 90 days&lt;/li&gt; 
 &lt;li&gt;Deleted binary, library injection indicators (LD_PRELOAD, DYLD_*)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;8. Platform Support&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt; (x86_64, arm64) - Full feature support (&lt;code&gt;/proc&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt; (x86_64, arm64) - Uses &lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;lsof&lt;/code&gt;, &lt;code&gt;sysctl&lt;/code&gt;, &lt;code&gt;pgrep&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt; (x86_64, arm64) - Native Win32 APIs (ToolHelp32, PSAPI, Service Control Manager). No PowerShell or WMI dependency.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;FreeBSD&lt;/strong&gt; (x86_64, arm64) - Uses &lt;code&gt;procstat&lt;/code&gt;, &lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;lsof&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;8.1 Feature Compatibility Matrix&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Linux&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;macOS&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Windows&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;FreeBSD&lt;/th&gt; 
   &lt;th&gt;Notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Process Selection&lt;/strong&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;By Name&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;By PID&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;By Port&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;By File&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;By Container&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&gt;Requires the runtime CLI on PATH (docker/podman/nerdctl/crictl/incus/lxc/lxc-ls/jls).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Multiple/mixed inputs&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&gt;Repeatable flags, mixed types.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Exact Match&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Full command line&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Process start time&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Working directory&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Environment variables&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&gt;macOS: SIP restrictions; Windows: protected processes inaccessible.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Network&lt;/strong&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Listening ports&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Bind addresses&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Port → PID resolution&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Port → Container fallback&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&gt;Used when the port is owned by PID 1 via systemd socket activation or a container runtime.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Service Detection&lt;/strong&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Service Manager&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&gt;Linux: systemd, macOS: launchd, Windows: Services, FreeBSD: rc.d&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Service Description&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&gt;Linux: &lt;code&gt;Description&lt;/code&gt;, macOS: &lt;code&gt;Comment&lt;/code&gt;, Windows: &lt;code&gt;Display Name&lt;/code&gt;, FreeBSD: &lt;code&gt;rc&lt;/code&gt; header&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Configuration Source&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&gt;Linux: Unit File, macOS: Plist, Windows: Registry Key, FreeBSD: Rc Script&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Supervisor&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Containers&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&gt;Docker (plus compose mappings), Podman, nerdctl, K8s (Kubepods/crictl), Containerd. Colima on macOS/Linux. Incus/LXC/LXD on Linux. Jails on FreeBSD.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;SSH session detection&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&gt;Detects remote IP and terminal.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tmux/screen detection&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&gt;Shows session name in source.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Schedule detection&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&gt;Linux: systemd timers, macOS: launchd intervals/calendar.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Snap/Flatpak detection&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Health &amp;amp; Diagnostics&lt;/strong&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CPU usage detection&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Memory usage detection&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Health status detection&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Open Files / Handles&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&gt;Windows: count only.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;File Locks&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&gt;Linux: &lt;code&gt;/proc/locks&lt;/code&gt;; macOS/FreeBSD: derived from &lt;code&gt;lsof&lt;/code&gt;/&lt;code&gt;fstat&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Deleted binary detection&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&gt;Warns if executable is missing.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Capability warnings&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&gt;Warns about dangerous capabilities on non-root processes.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Context&lt;/strong&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Git repo/branch detection&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Interactive Mode (TUI)&lt;/strong&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Processes Tab&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ports Tab&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Containers Tab&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Locks Tab&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&gt;Toggle (&lt;code&gt;a&lt;/code&gt;) shows all open files.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Process Details&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Process Actions&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&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Legend:&lt;/strong&gt; ✅ Full support | ⚠️ Partial/limited support | ❌ Not available&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;8.2 Permissions Note&lt;/h3&gt; 
&lt;h4&gt;Linux/FreeBSD&lt;/h4&gt; 
&lt;p&gt;witr inspects system directories which may require elevated permissions.&lt;/p&gt; 
&lt;p&gt;If you are not seeing the expected information, try running witr with sudo:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo witr [your arguments]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;macOS&lt;/h4&gt; 
&lt;p&gt;On macOS, witr uses &lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;lsof&lt;/code&gt;, and &lt;code&gt;launchctl&lt;/code&gt; to gather process information. Some operations may require elevated permissions:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo witr [your arguments]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note: Due to macOS System Integrity Protection (SIP), some system process details may not be accessible even with sudo.&lt;/p&gt; 
&lt;h4&gt;Windows&lt;/h4&gt; 
&lt;p&gt;On Windows, witr talks directly to Win32 APIs (ToolHelp32, PSAPI, Service Control Manager) rather than spawning PowerShell or WMI, startup is fast and there&#39;s no &lt;code&gt;Get-CimInstance&lt;/code&gt; hang. To see details for processes owned by other users or system services, you must run the terminal as &lt;strong&gt;Administrator&lt;/strong&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# Run in Administrator PowerShell
.\witr.exe [your arguments]
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;9. Success Criteria&lt;/h2&gt; 
&lt;p&gt;witr is successful if:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;A user can answer &quot;why is this running?&quot; within seconds&lt;/li&gt; 
 &lt;li&gt;It reduces reliance on multiple tools&lt;/li&gt; 
 &lt;li&gt;Output is understandable under stress&lt;/li&gt; 
 &lt;li&gt;Users trust it during incidents&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;10. Sponsors&lt;/h2&gt; 
&lt;p&gt;Special thanks to the people who supported &lt;strong&gt;witr&lt;/strong&gt; ❤️&lt;/p&gt; 
&lt;p&gt; &lt;a href=&quot;https://github.com/timcolson&quot; title=&quot;Tim Colson&quot;&gt; &lt;img src=&quot;https://images.weserv.nl/?url=github.com/timcolson.png&amp;amp;mask=circle&amp;amp;w=80&amp;amp;h=80&quot; width=&quot;80&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/R-Bose&quot; title=&quot;Rijurekh Bose&quot;&gt; &lt;img src=&quot;https://images.weserv.nl/?url=github.com/R-Bose.png&amp;amp;mask=circle&amp;amp;w=80&amp;amp;h=80&quot; width=&quot;80&quot; /&gt; &lt;/a&gt; &lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>AlexxIT/go2rtc</title>
      <link>https://github.com/AlexxIT/go2rtc</link>
      <description>&lt;p&gt;Ultimate camera streaming application&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/AlexxIT/go2rtc&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/website/images/logo.gif&quot; alt=&quot;go2rtc - GitHub&quot; /&gt; &lt;/a&gt; &lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/AlexxIT/go2rtc/stargazers&quot; target=&quot;_blank&quot;&gt; &lt;img style=&quot;display: inline&quot; src=&quot;https://img.shields.io/github/stars/AlexxIT/go2rtc?style=flat-square&amp;amp;logo=github&quot; alt=&quot;go2rtc - GitHub Stars&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/alexxit/go2rtc&quot; target=&quot;_blank&quot;&gt; &lt;img style=&quot;display: inline&quot; src=&quot;https://img.shields.io/docker/pulls/alexxit/go2rtc?style=flat-square&amp;amp;logo=docker&amp;amp;logoColor=white&amp;amp;label=pulls&quot; alt=&quot;go2rtc - Docker Pulls&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases&quot; target=&quot;_blank&quot;&gt; &lt;img style=&quot;display: inline&quot; src=&quot;https://img.shields.io/github/downloads/AlexxIT/go2rtc/total?color=blue&amp;amp;style=flat-square&amp;amp;logo=github&quot; alt=&quot;go2rtc - GitHub Downloads&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/4628&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/4628&quot; alt=&quot;go2rtc - Trendshift&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Ultimate camera streaming application with support for dozens formats and protocols.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;zero-dependency &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-binary&quot;&gt;small app&lt;/a&gt; for all OS (Windows, macOS, Linux, FreeBSD)&lt;/li&gt; 
 &lt;li&gt;zero-delay for many &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#codecs-madness&quot;&gt;supported protocols&lt;/a&gt; (lowest possible streaming latency)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-input&quot;&gt;streaming input&lt;/a&gt; from dozens formats and protocols&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-output&quot;&gt;streaming output&lt;/a&gt; in all popular formats&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-ingest&quot;&gt;streaming ingest&lt;/a&gt; in a number of popular formats&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#publish-stream&quot;&gt;publish&lt;/a&gt; any source to popular streaming services (YouTube, Telegram)&lt;/li&gt; 
 &lt;li&gt;on-the-fly transcoding only if necessary via &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ffmpeg/README.md&quot;&gt;FFmpeg&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#two-way-audio&quot;&gt;two-way audio&lt;/a&gt; support for many formats&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#stream-to-camera&quot;&gt;streaming audio&lt;/a&gt; to all cameras with &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#two-way-audio&quot;&gt;two-way audio&lt;/a&gt; support&lt;/li&gt; 
 &lt;li&gt;mixing tracks from different sources to single stream&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/www/README.md#javascript-api&quot;&gt;auto-match&lt;/a&gt; client-supported streaming formats and codecs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-stats&quot;&gt;streaming stats&lt;/a&gt; for all active connections&lt;/li&gt; 
 &lt;li&gt;can be &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#projects-using-go2rtc&quot;&gt;integrated to any project&lt;/a&gt; or be used as &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-binary&quot;&gt;standalone app&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Inspired by&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;series of streaming projects from &lt;a href=&quot;https://github.com/deepch&quot;&gt;@deepch&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pion/webrtc&quot;&gt;webrtc&lt;/a&gt; go library and whole &lt;a href=&quot;https://github.com/pion&quot;&gt;@pion&lt;/a&gt; team&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aler9/rtsp-simple-server&quot;&gt;rtsp-simple-server&lt;/a&gt; idea from &lt;a href=&quot;https://github.com/aler9&quot;&gt;@aler9&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gstreamer.freedesktop.org/&quot;&gt;GStreamer&lt;/a&gt; framework pipeline idea&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mediasoup.org/&quot;&gt;MediaSoup&lt;/a&gt; framework routing idea&lt;/li&gt; 
 &lt;li&gt;HomeKit Accessory Protocol from &lt;a href=&quot;https://github.com/brutella/hap&quot;&gt;@brutella&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;creator of the project&#39;s logo &lt;a href=&quot;https://www.instagram.com/v_novoseltsev&quot;&gt;@v_novoseltsev&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;br /&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Table of Contents&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#installation&quot;&gt;Installation&lt;/a&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-binary&quot;&gt;go2rtc: Binary&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-docker&quot;&gt;go2rtc: Docker&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-home-assistant-add-on&quot;&gt;go2rtc: Home Assistant add-on&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-home-assistant-integration&quot;&gt;go2rtc: Home Assistant Integration&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-master-version&quot;&gt;go2rtc: Master version&lt;/a&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#features&quot;&gt;Features&lt;/a&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-input&quot;&gt;Streaming input&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-output&quot;&gt;Streaming output&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-ingest&quot;&gt;Streaming ingest&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#two-way-audio&quot;&gt;Two-way audio&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#stream-to-camera&quot;&gt;Stream to camera&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#publish-stream&quot;&gt;Publish stream&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#preload-stream&quot;&gt;Preload stream&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-stats&quot;&gt;Streaming stats&lt;/a&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#codecs&quot;&gt;Codecs&lt;/a&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#codecs-filters&quot;&gt;Codecs filters&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#codecs-madness&quot;&gt;Codecs madness&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#built-in-transcoding&quot;&gt;Built-in transcoding&lt;/a&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#codecs-negotiation&quot;&gt;Codecs negotiation&lt;/a&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#security&quot;&gt;Security&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#projects-using-go2rtc&quot;&gt;Projects using go2rtc&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#camera-experience&quot;&gt;Camera experience&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#tips&quot;&gt;Tips&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Download &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-binary&quot;&gt;binary&lt;/a&gt; or use &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-docker&quot;&gt;Docker&lt;/a&gt; or Home Assistant &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-home-assistant-add-on&quot;&gt;add-on&lt;/a&gt; or &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-home-assistant-integration&quot;&gt;integration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Open web interface: &lt;code&gt;http://localhost:1984/&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Add &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#streaming-input&quot;&gt;streams&lt;/a&gt; to &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#configuration&quot;&gt;config&lt;/a&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Developers:&lt;/strong&gt; integrate &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/api/README.md&quot;&gt;HTTP API&lt;/a&gt; into your smart home platform.&lt;/p&gt; 
&lt;h3&gt;go2rtc: Binary&lt;/h3&gt; 
&lt;p&gt;Download binary for your OS from &lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/&quot;&gt;latest release&lt;/a&gt;:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;name&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/AlexxIT/go2rtc/releases/latest/download/go2rtc_win64.zip&quot;&gt;go2rtc_win64.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Windows 10+ 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_win32.zip&quot;&gt;go2rtc_win32.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Windows 10+ 32-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_win_arm64.zip&quot;&gt;go2rtc_win_arm64.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Windows ARM 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64&quot;&gt;go2rtc_linux_amd64&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Linux 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_i386&quot;&gt;go2rtc_linux_i386&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Linux 32-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_arm64&quot;&gt;go2rtc_linux_arm64&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Linux ARM 64-bit (ex. Raspberry 64-bit OS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_arm&quot;&gt;go2rtc_linux_arm&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Linux ARM 32-bit (ex. Raspberry 32-bit OS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_armv6&quot;&gt;go2rtc_linux_armv6&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Linux ARMv6 (for old Raspberry 1 and Zero)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_mipsel&quot;&gt;go2rtc_linux_mipsel&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Linux MIPS (ex. &lt;a href=&quot;https://github.com/AlexxIT/XiaomiGateway3&quot;&gt;Xiaomi Gateway 3&lt;/a&gt;, &lt;a href=&quot;https://github.com/gtxaspec/wz_mini_hacks&quot;&gt;Wyze cameras&lt;/a&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_mac_amd64.zip&quot;&gt;go2rtc_mac_amd64.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;macOS 11+ Intel 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_mac_arm64.zip&quot;&gt;go2rtc_mac_arm64.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;macOS ARM 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_freebsd_amd64.zip&quot;&gt;go2rtc_freebsd_amd64.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;FreeBSD 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_freebsd_arm64.zip&quot;&gt;go2rtc_freebsd_arm64.zip&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;FreeBSD ARM 64-bit&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Don&#39;t forget to fix the rights &lt;code&gt;chmod +x go2rtc_xxx_xxx&lt;/code&gt; on Linux and Mac.&lt;/p&gt; 
&lt;p&gt;PS. The application is compiled with the latest versions of the Go language for maximum speed and security. Therefore, the &lt;a href=&quot;https://go.dev/wiki/MinimumRequirements&quot;&gt;minimum OS versions&lt;/a&gt; depend on the Go language.&lt;/p&gt; 
&lt;h3&gt;go2rtc: Docker&lt;/h3&gt; 
&lt;p&gt;The Docker containers &lt;a href=&quot;https://hub.docker.com/r/alexxit/go2rtc&quot;&gt;&lt;code&gt;alexxit/go2rtc&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://github.com/AlexxIT/go2rtc/pkgs/container/go2rtc&quot;&gt;&lt;code&gt;ghcr.io/alexxit/go2rtc&lt;/code&gt;&lt;/a&gt; support multiple architectures including &lt;code&gt;386&lt;/code&gt;, &lt;code&gt;amd64&lt;/code&gt;, &lt;code&gt;arm/v6&lt;/code&gt;, &lt;code&gt;arm/v7&lt;/code&gt; and &lt;code&gt;arm64&lt;/code&gt;. These containers offer the same functionality as the Home Assistant &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-home-assistant-add-on&quot;&gt;add-on&lt;/a&gt; but are designed to operate independently of Home Assistant. It comes preinstalled with &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ffmpeg/README.md&quot;&gt;FFmpeg&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/echo/README.md&quot;&gt;Python&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;go2rtc: Home Assistant add-on&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FAlexxIT%2Fhassio-addons&quot;&gt;&lt;img src=&quot;https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg?sanitize=true&quot; alt=&quot;Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Settings &amp;gt; Add-ons &amp;gt; Plus &amp;gt; Repositories &amp;gt; Add&lt;pre&gt;&lt;code&gt;https://github.com/AlexxIT/hassio-addons
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;go2rtc &amp;gt; Install &amp;gt; Start&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;go2rtc: Home Assistant Integration&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/AlexxIT/WebRTC&quot;&gt;WebRTC Camera&lt;/a&gt; custom component can be used on any Home Assistant &lt;a href=&quot;https://www.home-assistant.io/installation/&quot;&gt;installation&lt;/a&gt;, including &lt;a href=&quot;https://github.com/AlexxIT/HassWP&quot;&gt;HassWP&lt;/a&gt; on Windows. It can automatically download and use the latest version of go2rtc. Or it can connect to an existing version of go2rtc. Addon installation in this case is optional.&lt;/p&gt; 
&lt;h3&gt;go2rtc: Master version&lt;/h3&gt; 
&lt;p&gt;Latest, but maybe unstable version:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Binary: &lt;a href=&quot;https://nightly.link/AlexxIT/go2rtc/workflows/build/master&quot;&gt;latest master build&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Docker: &lt;code&gt;alexxit/go2rtc:master&lt;/code&gt; or &lt;code&gt;alexxit/go2rtc:master-hardware&lt;/code&gt; versions&lt;/li&gt; 
 &lt;li&gt;Home Assistant add-on: &lt;code&gt;go2rtc master&lt;/code&gt; or &lt;code&gt;go2rtc master hardware&lt;/code&gt; versions&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;p&gt;This is the &lt;code&gt;go2rtc.yaml&lt;/code&gt; file in &lt;a href=&quot;https://en.wikipedia.org/wiki/YAML&quot;&gt;YAML-format&lt;/a&gt;. The configuration can be changed in the &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/www/README.md&quot;&gt;WebUI&lt;/a&gt; at &lt;code&gt;http://localhost:1984&lt;/code&gt;. The editor provides syntax highlighting and checking.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/website/images/webui-config.png&quot; alt=&quot;go2rtc webui config&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;The simplest config looks like this:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;streams:
  hall-camera: rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&amp;amp;subtype=0
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;by default go2rtc will search &lt;code&gt;go2rtc.yaml&lt;/code&gt; in the current work directory&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;api&lt;/code&gt; server will start on default &lt;strong&gt;1984 port&lt;/strong&gt; (TCP)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;rtsp&lt;/code&gt; server will start on default &lt;strong&gt;8554 port&lt;/strong&gt; (TCP)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;webrtc&lt;/code&gt; will use port &lt;strong&gt;8555&lt;/strong&gt; (TCP/UDP) for connections&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;More information can be &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/app/README.md&quot;&gt;found here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;A summary table of all modules and features can be found &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/README.md&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Core modules&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/app/README.md&quot;&gt;&lt;code&gt;app&lt;/code&gt;&lt;/a&gt; - Reading &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/app/README.md&quot;&gt;configs&lt;/a&gt; and setting up &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/app/README.md#log&quot;&gt;logs&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/api/README.md&quot;&gt;&lt;code&gt;api&lt;/code&gt;&lt;/a&gt; - Handle &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/api/README.md&quot;&gt;HTTP&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/api/ws/README.md&quot;&gt;WebSocket&lt;/a&gt; API.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/streams/README.md&quot;&gt;&lt;code&gt;streams&lt;/code&gt;&lt;/a&gt; - Handle a list of streams.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Streaming input&lt;/h3&gt; 
&lt;h4&gt;public protocols&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mjpeg/README.md#mjpeg-client&quot;&gt;&lt;code&gt;mpjpeg&lt;/code&gt;&lt;/a&gt; - The legacy but still used &lt;a href=&quot;https://en.wikipedia.org/wiki/Motion_JPEG&quot;&gt;MJPEG&lt;/a&gt; protocol for real-time media transmission.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/onvif/README.md#onvif-client&quot;&gt;&lt;code&gt;onvif&lt;/code&gt;&lt;/a&gt; - A popular &lt;a href=&quot;https://en.wikipedia.org/wiki/ONVIF&quot;&gt;ONVIF&lt;/a&gt; protocol for receiving media in RTSP format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtmp/README.md#rtmp-client&quot;&gt;&lt;code&gt;rtmp&lt;/code&gt;&lt;/a&gt; - The legacy but still used &lt;a href=&quot;https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol&quot;&gt;RTMP&lt;/a&gt; protocol for real-time media transmission.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtsp/README.md#rtsp-client&quot;&gt;&lt;code&gt;rtsp&lt;/code&gt;&lt;/a&gt; - The most common &lt;a href=&quot;https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol&quot;&gt;RTSP&lt;/a&gt; protocol for real-time media transmission.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#webrtc-client&quot;&gt;&lt;code&gt;webrtc&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://en.wikipedia.org/wiki/WebRTC&quot;&gt;WebRTC&lt;/a&gt; web-compatible protocol for real-time media transmission.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;yuv4mpegpipe&lt;/code&gt;&lt;/a&gt; - Raw &lt;a href=&quot;https://en.wikipedia.org/wiki/Y%E2%80%B2UV&quot;&gt;YUV&lt;/a&gt; frame stream with &lt;a href=&quot;https://manned.org/yuv4mpeg&quot;&gt;YUV4MPEG&lt;/a&gt; header.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;private protocols&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/bubble/README.md&quot;&gt;&lt;code&gt;bubble&lt;/code&gt;&lt;/a&gt; - Some NVR from &lt;a href=&quot;http://help.dvr163.com/&quot;&gt;dvr163.com&lt;/a&gt; and &lt;a href=&quot;http://www.eseecloud.com/&quot;&gt;eseecloud.com&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/doorbird/README.md&quot;&gt;&lt;code&gt;doorbird&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://www.doorbird.com/&quot;&gt;Doorbird&lt;/a&gt; devices with two-way audio.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/dvrip/README.md&quot;&gt;&lt;code&gt;dvrip&lt;/code&gt;&lt;/a&gt; - DVR-IP NVR, NetSurveillance, Sofia protocol (XMeye SDK).&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/eseecloud/README.md&quot;&gt;&lt;code&gt;eseecloud&lt;/code&gt;&lt;/a&gt; - Some NVR from &lt;a href=&quot;http://help.dvr163.com/&quot;&gt;dvr163.com&lt;/a&gt; and &lt;a href=&quot;http://www.eseecloud.com/&quot;&gt;eseecloud.com&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/gopro/README.md&quot;&gt;&lt;code&gt;gopro&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://gopro.com/&quot;&gt;GoPro&lt;/a&gt; cameras, connected via USB or Wi-Fi.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/hass/README.md&quot;&gt;&lt;code&gt;hass&lt;/code&gt;&lt;/a&gt; - Import cameras from &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt; config files.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/homekit/README.md&quot;&gt;&lt;code&gt;homekit&lt;/code&gt;&lt;/a&gt; - Cameras with &lt;a href=&quot;https://www.apple.com/home-app/accessories/&quot;&gt;Apple HomeKit&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/isapi/README.md&quot;&gt;&lt;code&gt;isapi&lt;/code&gt;&lt;/a&gt; - Two-way audio for &lt;a href=&quot;https://tpp.hikvision.com/download/ISAPI_OTAP&quot;&gt;Hikvision ISAPI&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/kasa/README.md&quot;&gt;&lt;code&gt;kasa&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://www.kasasmart.com/&quot;&gt;TP-Link Kasa&lt;/a&gt; cameras.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/multitrans/README.md&quot;&gt;&lt;code&gt;multitrans&lt;/code&gt;&lt;/a&gt; - Two-way audio for Chinese version of &lt;a href=&quot;https://www.tp-link.com.cn/&quot;&gt;TP-Link&lt;/a&gt; cameras.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/nest/README.md&quot;&gt;&lt;code&gt;nest&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://developers.google.com/nest/device-access/supported-devices&quot;&gt;Google Nest&lt;/a&gt; cameras through user-unfriendly and paid APIs.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ring/README.md&quot;&gt;&lt;code&gt;ring&lt;/code&gt;&lt;/a&gt; - Ring cameras with two-way audio support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/roborock/README.md&quot;&gt;&lt;code&gt;roborock&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://roborock.com/&quot;&gt;Roborock&lt;/a&gt; vacuums with cameras with two-way audio support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/tapo/README.md&quot;&gt;&lt;code&gt;tapo&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://www.tapo.com/&quot;&gt;TP-Link Tapo&lt;/a&gt; cameras with two-way audio support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/tapo/README.md#tp-link-vigi&quot;&gt;&lt;code&gt;vigi&lt;/code&gt;&lt;/a&gt; - TP-Link Vigi cameras.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/tuya/README.md&quot;&gt;&lt;code&gt;tuya&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://www.tuya.com/&quot;&gt;Tuya&lt;/a&gt; ecosystem cameras with two-way audio support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webtorrent/README.md&quot;&gt;&lt;code&gt;webtorrent&lt;/code&gt;&lt;/a&gt; - Stream from another go2rtc via &lt;a href=&quot;https://en.wikipedia.org/wiki/WebTorrent&quot;&gt;WebTorrent&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/wyze/README.md&quot;&gt;&lt;code&gt;wyze&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://wyze.com/&quot;&gt;Wyze&lt;/a&gt; cameras using native P2P protocol&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/xiaomi/README.md&quot;&gt;&lt;code&gt;xiaomi&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://home.mi.com/&quot;&gt;Xiaomi Mi Home&lt;/a&gt; ecosystem cameras with two-way audio support.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;devices&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/alsa/README.md&quot;&gt;&lt;code&gt;alsa&lt;/code&gt;&lt;/a&gt; - A &lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture&quot;&gt;framework&lt;/a&gt; for receiving audio from devices on Linux OS.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/v4l2/README.md&quot;&gt;&lt;code&gt;v4l2&lt;/code&gt;&lt;/a&gt; - A &lt;a href=&quot;https://en.wikipedia.org/wiki/Video4Linux&quot;&gt;framework&lt;/a&gt; for receiving video from devices on Linux OS.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;files&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;adts&lt;/code&gt;&lt;/a&gt; - Audio stream in &lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Audio_Coding&quot;&gt;AAC&lt;/a&gt; codec with Audio Data Transport Stream headers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;flv&lt;/code&gt;&lt;/a&gt; - The legacy but still used &lt;a href=&quot;https://en.wikipedia.org/wiki/Flash_Video&quot;&gt;Flash Video&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;h264&lt;/code&gt;&lt;/a&gt; - AVC/H.264 bitstream.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;hevc&lt;/code&gt;&lt;/a&gt; - HEVC/H.265 bitstream.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md&quot;&gt;&lt;code&gt;hls&lt;/code&gt;&lt;/a&gt; - A popular &lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP_Live_Streaming&quot;&gt;HTTP Live Streaming&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;mjpeg&lt;/code&gt;&lt;/a&gt; - A continuous sequence of JPEG frames (without HTTP headers).&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;mpegts&lt;/code&gt;&lt;/a&gt; - The legacy &lt;a href=&quot;https://en.wikipedia.org/wiki/MPEG_transport_stream&quot;&gt;MPEG transport stream&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/http/README.md#tcp&quot;&gt;&lt;code&gt;wav&lt;/code&gt;&lt;/a&gt; - Audio stream in &lt;a href=&quot;https://en.wikipedia.org/wiki/WAV&quot;&gt;Waveform Audio File&lt;/a&gt; format.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;scripts&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/echo/README.md&quot;&gt;&lt;code&gt;echo&lt;/code&gt;&lt;/a&gt; - If the source has a dynamic link, you can use a bash or python script to get it.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/exec/README.md&quot;&gt;&lt;code&gt;exec&lt;/code&gt;&lt;/a&gt; - You can run an external application (&lt;code&gt;ffmpeg&lt;/code&gt;, &lt;code&gt;gstreamer&lt;/code&gt;, &lt;code&gt;rpicam&lt;/code&gt;, etc.) and receive a media stream from it.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/expr/README.md&quot;&gt;&lt;code&gt;expr&lt;/code&gt;&lt;/a&gt; - If the source has a dynamic link, you can use &lt;a href=&quot;https://github.com/expr-lang/expr&quot;&gt;Expr&lt;/a&gt; language to get it.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ffmpeg/README.md&quot;&gt;&lt;code&gt;ffmpeg&lt;/code&gt;&lt;/a&gt; - Use &lt;a href=&quot;https://ffmpeg.org/&quot;&gt;FFmpeg&lt;/a&gt; as a stream source. Hardware-accelerated transcoding and streaming from USB devices are supported.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;webrtc&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#creality&quot;&gt;&lt;code&gt;creality&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://www.creality.com/&quot;&gt;Creality&lt;/a&gt; 3D printer cameras.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#kinesis&quot;&gt;&lt;code&gt;kinesis&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://aws.amazon.com/kinesis/video-streams/&quot;&gt;Amazon Kinesis&lt;/a&gt; video streams.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#openipc&quot;&gt;&lt;code&gt;openipc&lt;/code&gt;&lt;/a&gt; - Cameras on open-source &lt;a href=&quot;https://openipc.org/&quot;&gt;OpenIPC&lt;/a&gt; firmware.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#switchbot&quot;&gt;&lt;code&gt;switchbot&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://us.switch-bot.com/&quot;&gt;SwitchBot&lt;/a&gt; cameras.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#whep&quot;&gt;&lt;code&gt;whep&lt;/code&gt;&lt;/a&gt; - &lt;a href=&quot;https://datatracker.ietf.org/doc/draft-murillo-whep/&quot;&gt;WebRTC/WHEP&lt;/a&gt; is replaced by &lt;a href=&quot;https://datatracker.ietf.org/doc/charter-ietf-wish/02/&quot;&gt;WebRTC/WISH&lt;/a&gt; standard for WebRTC video/audio viewers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#wyze&quot;&gt;&lt;code&gt;wyze&lt;/code&gt;&lt;/a&gt; - Legacy method to connect to &lt;a href=&quot;https://www.wyze.com/&quot;&gt;Wyze&lt;/a&gt; cameras via &lt;a href=&quot;https://github.com/mrlt8/docker-wyze-bridge&quot;&gt;docker-wyze-bridge&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Streaming output&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mpeg/README.md&quot;&gt;&lt;code&gt;adts&lt;/code&gt;&lt;/a&gt; - Output stream in ADTS format with &lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Audio_Coding&quot;&gt;AAC&lt;/a&gt; audio.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mjpeg/README.md#ascii&quot;&gt;&lt;code&gt;ascii&lt;/code&gt;&lt;/a&gt; - Just for fun stream as &lt;a href=&quot;https://www.youtube.com/watch?v=sHj_3h_sX7M&quot;&gt;ASCII to Terminal&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtmp/README.md&quot;&gt;&lt;code&gt;flv&lt;/code&gt;&lt;/a&gt; - Output stream in &lt;a href=&quot;https://en.wikipedia.org/wiki/Flash_Video&quot;&gt;Flash Video&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/hls/README.md&quot;&gt;&lt;code&gt;hls&lt;/code&gt;&lt;/a&gt; - Output stream in &lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP_Live_Streaming&quot;&gt;HTTP Live Streaming&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/homekit/README.md#homekit-server&quot;&gt;&lt;code&gt;homekit&lt;/code&gt;&lt;/a&gt; - Output stream to &lt;a href=&quot;https://www.apple.com/home-app/&quot;&gt;Apple Home&lt;/a&gt; using &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_Home&quot;&gt;HomeKit&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mjpeg/README.md#jpeg&quot;&gt;&lt;code&gt;jpeg&lt;/code&gt;&lt;/a&gt; - Output snapshots in &lt;a href=&quot;https://en.wikipedia.org/wiki/JPEG&quot;&gt;JPEG&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mjpeg/README.md#mpjpeg&quot;&gt;&lt;code&gt;mpjpeg&lt;/code&gt;&lt;/a&gt; - Output a stream in &lt;a href=&quot;https://en.wikipedia.org/wiki/Motion_JPEG&quot;&gt;MJPEG&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mp4/README.md&quot;&gt;&lt;code&gt;mp4&lt;/code&gt;&lt;/a&gt; - Output as &lt;a href=&quot;https://en.wikipedia.org/wiki/Progressive_download&quot;&gt;MP4 stream&lt;/a&gt; or &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API&quot;&gt;Media Source Extensions&lt;/a&gt; (MSE) compatible format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mpeg/README.md&quot;&gt;&lt;code&gt;mpegts&lt;/code&gt;&lt;/a&gt; - Output stream in &lt;a href=&quot;https://en.wikipedia.org/wiki/MPEG_transport_stream&quot;&gt;MPEG transport stream&lt;/a&gt; format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/onvif/README.md#onvif-server&quot;&gt;&lt;code&gt;onvif&lt;/code&gt;&lt;/a&gt; - Output stream using &lt;a href=&quot;https://en.wikipedia.org/wiki/ONVIF&quot;&gt;ONVIF&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtmp/README.md#rtmp-server&quot;&gt;&lt;code&gt;rtmp&lt;/code&gt;&lt;/a&gt; - Output stream using &lt;a href=&quot;https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol&quot;&gt;Real-Time Messaging&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtsp/README.md#rtsp-server&quot;&gt;&lt;code&gt;rtsp&lt;/code&gt;&lt;/a&gt; - Output stream using &lt;a href=&quot;https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol&quot;&gt;Real-Time Streaming&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#webrtc-server&quot;&gt;&lt;code&gt;webrtc&lt;/code&gt;&lt;/a&gt; - Output stream using &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API&quot;&gt;Web Real-Time Communication&lt;/a&gt; API.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webtorrent/README.md#webtorrent-server&quot;&gt;&lt;code&gt;webtorrent&lt;/code&gt;&lt;/a&gt; - Output stream using &lt;a href=&quot;https://en.wikipedia.org/wiki/WebTorrent&quot;&gt;WebTorrent&lt;/a&gt; protocol.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mjpeg/README.md#yuv4mpegpipe&quot;&gt;&lt;code&gt;yuv4mpegpipe&lt;/code&gt;&lt;/a&gt; - Output in raw &lt;a href=&quot;https://en.wikipedia.org/wiki/Y%E2%80%B2UV&quot;&gt;YUV&lt;/a&gt; frame stream with &lt;a href=&quot;https://manned.org/yuv4mpeg&quot;&gt;YUV4MPEG&lt;/a&gt; header.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Streaming ingest&lt;/h3&gt; 
&lt;p&gt;Supported for: &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtmp/README.md#flv-server&quot;&gt;&lt;code&gt;flv&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mjpeg/README.md#streaming-ingest&quot;&gt;&lt;code&gt;mjpeg&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mpeg/README.md#streaming-ingest&quot;&gt;&lt;code&gt;mpegts&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtmp/README.md#rtmp-server&quot;&gt;&lt;code&gt;rtmp&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtsp/README.md#streaming-ingest&quot;&gt;&lt;code&gt;rtsp&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md#streaming-ingest&quot;&gt;&lt;code&gt;webrtc&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;This is a feature when go2rtc expects to receive an incoming stream from an external application. The stream transmission is started and stopped by an external application.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;You can push data only to an existing stream (create a stream with empty source in config).&lt;/li&gt; 
 &lt;li&gt;You can push multiple incoming sources to the same stream.&lt;/li&gt; 
 &lt;li&gt;You can push data to a non-empty stream, so it will have additional codecs inside.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Two-way audio&lt;/h3&gt; 
&lt;p&gt;Supported for: &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/doorbird/README.md&quot;&gt;&lt;code&gt;doorbird&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/dvrip/README.md&quot;&gt;&lt;code&gt;dvrip&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/exec/README.md&quot;&gt;&lt;code&gt;exec&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/isapi/README.md&quot;&gt;&lt;code&gt;isapi&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/multitrans/README.md&quot;&gt;&lt;code&gt;multitrans&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ring/README.md&quot;&gt;&lt;code&gt;ring&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/roborock/README.md&quot;&gt;&lt;code&gt;roborock&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtsp/README.md#two-way-audio&quot;&gt;&lt;code&gt;rtsp&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/tapo/README.md&quot;&gt;&lt;code&gt;tapo&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/tuya/README.md&quot;&gt;&lt;code&gt;tuya&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md&quot;&gt;&lt;code&gt;webrtc&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/wyze/README.md&quot;&gt;&lt;code&gt;wyze&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/xiaomi/README.md&quot;&gt;&lt;code&gt;xiaomi&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Two-way audio can be used in browser with &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md&quot;&gt;WebRTC&lt;/a&gt; technology. The browser will give access to the microphone only for HTTPS sites (&lt;a href=&quot;https://stackoverflow.com/questions/52759992/how-to-access-camera-and-microphone-in-chrome-without-https&quot;&gt;read more&lt;/a&gt;).&lt;/p&gt; 
&lt;h3&gt;Stream to camera&lt;/h3&gt; 
&lt;p&gt;You can play audio files or live streams on any camera with &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#two-way-audio&quot;&gt;two-way audio&lt;/a&gt; support.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/streams/README.md#stream-to-camera&quot;&gt;read more&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Publish stream&lt;/h3&gt; 
&lt;p&gt;You can publish any stream to streaming services (YouTube, Telegram, etc.) via RTMP/RTMPS.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/streams/README.md#publish-stream&quot;&gt;read more&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Preload stream&lt;/h3&gt; 
&lt;p&gt;You can preload any stream on go2rtc start. This is useful for cameras that take a long time to start up.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/streams/README.md#preload-stream&quot;&gt;read more&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Streaming stats&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/www/README.md&quot;&gt;WebUI&lt;/a&gt; provides detailed information about all active connections, including IP-addresses, formats, protocols, number of packets and bytes transferred. Via the &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/api/README.md&quot;&gt;HTTP API&lt;/a&gt; in &lt;a href=&quot;https://en.wikipedia.org/wiki/JSON&quot;&gt;&lt;code&gt;json&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/DOT_(graph_description_language)&quot;&gt;&lt;code&gt;dot&lt;/code&gt;&lt;/a&gt; format on an interactive connection map.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/website/images/webui-net.png&quot; alt=&quot;go2rtc webui net&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Codecs&lt;/h2&gt; 
&lt;p&gt;If you have questions about why video or audio is not displayed, you need to read the following sections.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Name&lt;/th&gt; 
   &lt;th&gt;FFmpeg&lt;/th&gt; 
   &lt;th&gt;RTSP&lt;/th&gt; 
   &lt;th&gt;Aliases&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Advanced Audio Coding&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;aac&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;MPEG4-GENERIC&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Advanced Video Coding&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;h264&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;H264&lt;/td&gt; 
   &lt;td&gt;AVC, H.264&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;G.711 PCM (A-law)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;alaw&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;PCMA&lt;/td&gt; 
   &lt;td&gt;G711A&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;G.711 PCM (µ-law)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mulaw&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;PCMU&lt;/td&gt; 
   &lt;td&gt;G711u&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;High Efficiency Video Coding&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;hevc&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;H265&lt;/td&gt; 
   &lt;td&gt;HEVC, H.265&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Motion JPEG&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mpjpeg&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;JPEG&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MPEG-1 Audio Layer III&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mp3&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;MPA&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Opus Codec&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;opus&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;OPUS&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;PCM signed 16-bit big-endian&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;s16be&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;L16&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Codecs filters&lt;/h3&gt; 
&lt;p&gt;go2rtc can automatically detect which codecs your device supports for &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/webrtc/README.md&quot;&gt;WebRTC&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mp4/README.md&quot;&gt;MSE&lt;/a&gt; technologies.&lt;/p&gt; 
&lt;p&gt;But it cannot be done for &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/rtsp/README.md&quot;&gt;RTSP&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/mp4/README.md&quot;&gt;HTTP progressive streaming&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/hls/README.md&quot;&gt;HLS&lt;/a&gt; technologies. You can manually add a codec filter when you create a link to a stream. The filters work the same for all three technologies. Filters do not create a new codec, they only select the suitable codec from existing sources. You can add new codecs to the stream using the &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ffmpeg/README.md&quot;&gt;FFmpeg transcoding&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Without filters:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;RTSP will provide only the first video and only the first audio (any codec)&lt;/li&gt; 
 &lt;li&gt;MP4 will include only compatible codecs (H264, H265, AAC)&lt;/li&gt; 
 &lt;li&gt;HLS will output in the legacy TS format (H264 without audio)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Some examples:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;rtsp://192.168.1.123:8554/camera1?mp4&lt;/code&gt; - useful for recording as MP4 files (e.g. Home Assistant or Frigate)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;rtsp://192.168.1.123:8554/camera1?video=h264,h265&amp;amp;audio=aac&lt;/code&gt; - full version of the filter above&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;rtsp://192.168.1.123:8554/camera1?video=h264&amp;amp;audio=aac&amp;amp;audio=opus&lt;/code&gt; - H264 video codec and two separate audio tracks&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;rtsp://192.168.1.123:8554/camera1?video&amp;amp;audio=all&lt;/code&gt; - any video codec and all audio codecs as separate tracks&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;http://192.168.1.123:1984/api/stream.m3u8?src=camera1&amp;amp;mp4&lt;/code&gt; - HLS stream with MP4 compatible codecs (HLS/fMP4)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;http://192.168.1.123:1984/api/stream.m3u8?src=camera1&amp;amp;mp4=flac&lt;/code&gt; - HLS stream with PCMA/PCMU/PCM audio support (HLS/fMP4), won&#39;t work on old devices&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;http://192.168.1.123:1984/api/stream.mp4?src=camera1&amp;amp;mp4=flac&lt;/code&gt; - MP4 file with PCMA/PCMU/PCM audio support, won&#39;t work on old devices (ex. iOS 12)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;http://192.168.1.123:1984/api/stream.mp4?src=camera1&amp;amp;mp4=all&lt;/code&gt; - MP4 file with non-standard audio codecs, won&#39;t work on some players&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Codecs madness&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;AVC/H.264&lt;/code&gt; video can be played almost anywhere. But &lt;code&gt;HEVC/H.265&lt;/code&gt; has many limitations in supporting different devices and browsers.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Device&lt;/th&gt; 
   &lt;th&gt;WebRTC&lt;/th&gt; 
   &lt;th&gt;MSE&lt;/th&gt; 
   &lt;th&gt;HTTP*&lt;/th&gt; 
   &lt;th&gt;HLS&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;em&gt;latency&lt;/em&gt;&lt;/td&gt; 
   &lt;td&gt;best&lt;/td&gt; 
   &lt;td&gt;medium&lt;/td&gt; 
   &lt;td&gt;bad&lt;/td&gt; 
   &lt;td&gt;bad&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Desktop Chrome 136+ &lt;br /&gt; Desktop Edge &lt;br /&gt; Android Chrome 136+&lt;/td&gt; 
   &lt;td&gt;H264, H265* &lt;br /&gt; PCMU, PCMA &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;H264, H265* &lt;br /&gt; AAC, FLAC* &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;H264, H265* &lt;br /&gt; AAC, FLAC* &lt;br /&gt; OPUS, MP3&lt;/td&gt; 
   &lt;td&gt;no&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Desktop Firefox&lt;/td&gt; 
   &lt;td&gt;H264 &lt;br /&gt; PCMU, PCMA &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;H264 &lt;br /&gt; AAC, FLAC* &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;H264 &lt;br /&gt; AAC, FLAC* &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;no&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Desktop Safari 14+ &lt;br /&gt; iPad Safari 14+ &lt;br /&gt; iPhone Safari 17.1+&lt;/td&gt; 
   &lt;td&gt;H264, H265* &lt;br /&gt; PCMU, PCMA &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;H264, H265 &lt;br /&gt; AAC, FLAC*&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;no!&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;H264, H265 &lt;br /&gt; AAC, FLAC*&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iPhone Safari 14+&lt;/td&gt; 
   &lt;td&gt;H264, H265* &lt;br /&gt; PCMU, PCMA &lt;br /&gt; OPUS&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;no!&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;no!&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;H264, H265 &lt;br /&gt; AAC, FLAC*&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;macOS &lt;a href=&quot;https://apps.apple.com/app/home-assistant/id1099568401&quot;&gt;Hass App&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;no&lt;/td&gt; 
   &lt;td&gt;no&lt;/td&gt; 
   &lt;td&gt;no&lt;/td&gt; 
   &lt;td&gt;H264, H265 &lt;br /&gt; AAC, FLAC*&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;HTTP*&lt;/code&gt; - HTTP Progressive Streaming, not related to &lt;a href=&quot;https://en.wikipedia.org/wiki/Progressive_download&quot;&gt;progressive download&lt;/a&gt;, because the file has no size and no end&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;WebRTC H265&lt;/code&gt; - supported in &lt;a href=&quot;https://developer.chrome.com/release-notes/136&quot;&gt;Chrome 136+&lt;/a&gt;, supported in &lt;a href=&quot;https://developer.apple.com/documentation/safari-release-notes/safari-18-release-notes&quot;&gt;Safari 18+&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;MSE iPhone&lt;/code&gt; - supported in &lt;a href=&quot;https://webkit.org/blog/14735/webkit-features-in-safari-17-1/&quot;&gt;iOS 17.1+&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Audio&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;go2rtc supports &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#built-in-transcoding&quot;&gt;automatic repackaging&lt;/a&gt; of &lt;code&gt;PCMA/PCMU/PCM&lt;/code&gt; codecs into &lt;code&gt;FLAC&lt;/code&gt; for MSE/MP4/HLS so they&#39;ll work almost anywhere&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;WebRTC&lt;/strong&gt; audio codecs: &lt;code&gt;PCMU/8000&lt;/code&gt;, &lt;code&gt;PCMA/8000&lt;/code&gt;, &lt;code&gt;OPUS/48000/2&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;OPUS&lt;/code&gt; and &lt;code&gt;MP3&lt;/code&gt; inside &lt;strong&gt;MP4&lt;/strong&gt; are part of the standard, but some players do not support them anyway (especially Apple)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Apple devices&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;all Apple devices don&#39;t support HTTP progressive streaming&lt;/li&gt; 
 &lt;li&gt;old iPhone firmwares don&#39;t support MSE technology because it competes with the HTTP Live Streaming (HLS) technology, invented by Apple&lt;/li&gt; 
 &lt;li&gt;HLS is the worst technology for &lt;strong&gt;live&lt;/strong&gt; streaming, it still exists only because of iPhones&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Built-in transcoding&lt;/h3&gt; 
&lt;p&gt;There are no plans to embed complex transcoding algorithms inside go2rtc. &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ffmpeg/README.md&quot;&gt;FFmpeg source&lt;/a&gt; does a great job with this. Including &lt;a href=&quot;https://github.com/AlexxIT/go2rtc/wiki/Hardware-acceleration&quot;&gt;hardware acceleration&lt;/a&gt; support.&lt;/p&gt; 
&lt;p&gt;But go2rtc has some simple algorithms. They are turned on automatically; you do not need to set them up additionally.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;PCM for MSE/MP4/HLS&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Go2rtc can pack &lt;code&gt;PCMA&lt;/code&gt;, &lt;code&gt;PCMU&lt;/code&gt; and &lt;code&gt;PCM&lt;/code&gt; codecs into an MP4 container so that they work in all browsers and all built-in players on modern devices. Including Apple QuickTime:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PCMA/PCMU =&amp;gt; PCM =&amp;gt; FLAC =&amp;gt; MSE/MP4/HLS
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Resample PCMA/PCMU for WebRTC&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;By default WebRTC supports only &lt;code&gt;PCMA/8000&lt;/code&gt; and &lt;code&gt;PCMU/8000&lt;/code&gt;. But go2rtc can automatically resample PCMA and PCMU codecs with a different sample rate. Also, go2rtc can transcode &lt;code&gt;PCM&lt;/code&gt; codec to &lt;code&gt;PCMA/8000&lt;/code&gt;, so WebRTC can play it:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PCM/xxx =&amp;gt; PCMA/8000 =&amp;gt; WebRTC
PCMA/xxx =&amp;gt; PCMA/8000 =&amp;gt; WebRTC
PCMU/xxx =&amp;gt; PCMU/8000 =&amp;gt; WebRTC
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;FLAC codec not supported in an RTSP stream. If you are using Frigate or Home Assistant for recording MP4 files with PCMA/PCMU/PCM audio, you should set up transcoding to the AAC codec.&lt;/li&gt; 
 &lt;li&gt;PCMA and PCMU are VERY low-quality codecs. They support only 256! different sounds. Use them only when you have no other options.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Codecs negotiation&lt;/h3&gt; 
&lt;p&gt;For example, you want to watch an RTSP stream from a &lt;a href=&quot;https://www.dahuasecurity.com/fr/products/All-Products/Network-Cameras/Wireless-Series/Wi-Fi-Series/4MP/IPC-K42&quot;&gt;Dahua IPC-K42&lt;/a&gt; camera in your Chrome browser.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;this camera supports two-way audio standard &lt;strong&gt;ONVIF Profile T&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;this camera supports codecs &lt;strong&gt;H264, H265&lt;/strong&gt; for sending video, and you select &lt;code&gt;H264&lt;/code&gt; in camera settings&lt;/li&gt; 
 &lt;li&gt;this camera supports codecs &lt;strong&gt;AAC, PCMU, PCMA&lt;/strong&gt; for sending audio (from mic), and you select &lt;code&gt;AAC/16000&lt;/code&gt; in camera settings&lt;/li&gt; 
 &lt;li&gt;this camera supports codecs &lt;strong&gt;AAC, PCMU, PCMA&lt;/strong&gt; for receiving audio (to speaker), you don&#39;t need to select them&lt;/li&gt; 
 &lt;li&gt;your browser supports codecs &lt;strong&gt;H264, VP8, VP9, AV1&lt;/strong&gt; for receiving video, you don&#39;t need to select them&lt;/li&gt; 
 &lt;li&gt;your browser supports codecs &lt;strong&gt;OPUS, PCMU, PCMA&lt;/strong&gt; for sending and receiving audio, you don&#39;t need to select them&lt;/li&gt; 
 &lt;li&gt;you can&#39;t get the camera audio directly because its audio codecs don&#39;t match your browser&#39;s codecs 
  &lt;ul&gt; 
   &lt;li&gt;so you decide to use transcoding via FFmpeg and add this setting to the config YAML file&lt;/li&gt; 
   &lt;li&gt;you have chosen &lt;code&gt;OPUS/48000/2&lt;/code&gt; codec, because it is higher quality than the &lt;code&gt;PCMU/8000&lt;/code&gt; or &lt;code&gt;PCMA/8000&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Now you have a stream with two sources - &lt;strong&gt;RTSP and FFmpeg&lt;/strong&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;streams:
  dahua:
    - rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&amp;amp;subtype=0&amp;amp;unicast=true&amp;amp;proto=Onvif
    - ffmpeg:rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&amp;amp;subtype=0#audio=opus
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;go2rtc&lt;/strong&gt; automatically matches codecs for your browser across all of your stream sources. This is called &lt;strong&gt;multi-source two-way codec negotiation&lt;/strong&gt;, and it&#39;s one of the main features of this app.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;PS.&lt;/strong&gt; You can select &lt;code&gt;PCMU&lt;/code&gt; or &lt;code&gt;PCMA&lt;/code&gt; codec in camera settings and not use transcoding at all. Or you can select &lt;code&gt;AAC&lt;/code&gt; codec for main stream and &lt;code&gt;PCMU&lt;/code&gt; codec for second stream and add both RTSP to YAML config, this also will work fine.&lt;/p&gt; 
&lt;h2&gt;Security&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;If an attacker gains access to the API, you are in danger. Through the API, an attacker can use insecure sources such as echo and exec. And get full access to your server.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;For maximum (paranoid) security, go2rtc has special settings:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;app:
  # use only allowed modules
  modules: [api, rtsp, webrtc, exec, ffmpeg, mjpeg]

api:
  # use only allowed API paths
  allow_paths: [/api, /api/streams, /api/webrtc, /api/frame.jpeg]
  # enable auth for localhost (used together with username and password)
  local_auth: true

exec:
  # use only allowed exec paths
  allow_paths: [ffmpeg]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;By default, &lt;code&gt;go2rtc&lt;/code&gt; starts the Web interface on port &lt;code&gt;1984&lt;/code&gt; and RTSP on port &lt;code&gt;8554&lt;/code&gt;, as well as uses port &lt;code&gt;8555&lt;/code&gt; for WebRTC connections. The three ports are accessible from your local network. So anyone on your local network can watch video from your cameras without authorization. The same rule applies to the Home Assistant add-on.&lt;/p&gt; 
&lt;p&gt;This is not a problem if you trust your local network as much as I do. But you can change this behaviour with a &lt;code&gt;go2rtc.yaml&lt;/code&gt; config:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;api:
  listen: &quot;127.0.0.1:1984&quot; # localhost

rtsp:
  listen: &quot;127.0.0.1:8554&quot; # localhost

webrtc:
  listen: &quot;:8555&quot; # external TCP/UDP port
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;local access to RTSP is not a problem for &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/internal/ffmpeg/README.md&quot;&gt;FFmpeg&lt;/a&gt; integration, because it runs locally on your server&lt;/li&gt; 
 &lt;li&gt;local access to API is not a problem for the &lt;a href=&quot;https://raw.githubusercontent.com/AlexxIT/go2rtc/master/#go2rtc-home-assistant-add-on&quot;&gt;Home Assistant add-on&lt;/a&gt;, because Home Assistant runs locally on the same server, and the add-on web UI is protected with Home Assistant authorization (&lt;a href=&quot;https://www.home-assistant.io/blog/2019/04/15/hassio-ingress/&quot;&gt;Ingress feature&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;external access to WebRTC TCP port is not a problem, because it is used only for transmitting encrypted media data 
  &lt;ul&gt; 
   &lt;li&gt;anyway you need to open this port to your local network and to the Internet for WebRTC to work&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you need web interface protection without the Home Assistant add-on, you need to use a reverse proxy, like &lt;a href=&quot;https://nginx.org/&quot;&gt;Nginx&lt;/a&gt;, &lt;a href=&quot;https://caddyserver.com/&quot;&gt;Caddy&lt;/a&gt;, etc.&lt;/p&gt; 
&lt;p&gt;PS. Additionally, WebRTC will try to use the 8555 UDP port to transmit encrypted media. It works without problems on the local network, and sometimes also works for external access, even if you haven&#39;t opened this port on your router (&lt;a href=&quot;https://en.wikipedia.org/wiki/UDP_hole_punching&quot;&gt;read more&lt;/a&gt;). But for stable external WebRTC access, you need to open the 8555 port on your router for both TCP and UDP.&lt;/p&gt; 
&lt;h2&gt;Projects using go2rtc&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt; &lt;a href=&quot;https://www.home-assistant.io/integrations/go2rtc/&quot;&gt;2024.11+&lt;/a&gt; - top open-source smart home project&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://frigate.video/&quot;&gt;Frigate&lt;/a&gt; &lt;a href=&quot;https://docs.frigate.video/guides/configuring_go2rtc/&quot;&gt;0.12+&lt;/a&gt; - open-source NVR built around real-time AI object detection&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.cameraui.com/&quot;&gt;camera.ui&lt;/a&gt; - The modern, local-first platform for professional video surveillance.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dermotduffy/advanced-camera-card&quot;&gt;Advanced Camera Card&lt;/a&gt; - custom card for Home Assistant&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/OpenIPC/firmware/tree/master/general/package/go2rtc&quot;&gt;OpenIPC&lt;/a&gt; - alternative IP camera firmware from an open community&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gtxaspec/wz_mini_hacks&quot;&gt;wz_mini_hacks&lt;/a&gt; - custom firmware for Wyze cameras&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/oischinger/eufyp2pstream&quot;&gt;EufyP2PStream&lt;/a&gt; - a small project that provides a video/audio stream from Eufy cameras that don&#39;t directly support RTSP&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bropat/ioBroker.eusec&quot;&gt;ioBroker.euSec&lt;/a&gt; - &lt;a href=&quot;https://www.iobroker.net/&quot;&gt;ioBroker&lt;/a&gt; adapter for controlling Eufy security devices&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Anonym-tsk/MMM-go2rtc&quot;&gt;MMM-go2rtc&lt;/a&gt; - MagicMirror² module&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tsightler/ring-mqtt&quot;&gt;ring-mqtt&lt;/a&gt; - Ring-to-MQTT bridge&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/opensensor/lightNVR&quot;&gt;lightNVR&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Distributions&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://pkgs.alpinelinux.org/packages?name=go2rtc&quot;&gt;Alpine Linux&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://linux-packages.com/aur/package/go2rtc&quot;&gt;Arch User Repository&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/inode64/inode64-overlay/tree/main/media-video/go2rtc&quot;&gt;Gentoo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://search.nixos.org/packages?query=go2rtc&quot;&gt;NixOS&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/community-scripts/ProxmoxVE/&quot;&gt;Proxmox Helper Scripts&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.myqnap.org/product/go2rtc/&quot;&gt;QNAP&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://synocommunity.com/package/go2rtc&quot;&gt;Synology NAS&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://unraid.net/community/apps?q=go2rtc&quot;&gt;Unraid&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Camera experience&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.dahuasecurity.com/&quot;&gt;Dahua&lt;/a&gt; - reference implementation streaming protocols, a lot of settings, high stream quality, multiple streaming clients&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.ezviz.com/&quot;&gt;EZVIZ&lt;/a&gt; - awful RTSP protocol implementation, many bugs in SDP&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.hikvision.com/&quot;&gt;Hikvision&lt;/a&gt; - a lot of proprietary streaming technologies&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://reolink.com/&quot;&gt;Reolink&lt;/a&gt; - some models have an awful, unusable RTSP implementation and not the best RTMP alternative (I recommend that you contact Reolink support for new firmware), few settings&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://sonoff.tech/&quot;&gt;Sonoff&lt;/a&gt; - very low stream quality, no settings, not the best protocol implementation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.tp-link.com/&quot;&gt;TP-Link&lt;/a&gt; - few streaming clients, packet loss?&lt;/li&gt; 
 &lt;li&gt;Cheap noname cameras, Wyze Cams, Xiaomi cameras with hacks (usually have &lt;code&gt;/live/ch00_1&lt;/code&gt; in RTSP URL) - awful but usable RTSP protocol implementation, low stream quality, few settings, packet loss?&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Tips&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Using apps for low RTSP delay&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ffplay -fflags nobuffer -flags low_delay &quot;rtsp://192.168.1.123:8554/camera1&quot;&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;VLC &amp;gt; Preferences &amp;gt; Input / Codecs &amp;gt; Default Caching Level: Lowest Latency&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Snapshots to Telegram&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/AlexxIT/go2rtc/wiki/Snapshot-to-Telegram&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>github/github-mcp-server</title>
      <link>https://github.com/github/github-mcp-server</link>
      <description>&lt;p&gt;GitHub&#39;s official MCP Server&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://goreportcard.com/report/github.com/github/github-mcp-server&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/github/github-mcp-server&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;GitHub MCP Server&lt;/h1&gt; 
&lt;p&gt;The GitHub MCP Server connects AI tools directly to GitHub&#39;s platform. This gives AI agents, assistants, and chatbots the ability to read repositories and code files, manage issues and PRs, analyze code, and automate workflows. All through natural language interactions.&lt;/p&gt; 
&lt;h3&gt;Use Cases&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Repository Management: Browse and query code, search files, analyze commits, and understand project structure across any repository you have access to.&lt;/li&gt; 
 &lt;li&gt;Issue &amp;amp; PR Automation: Create, update, and manage issues and pull requests. Let AI help triage bugs, review code changes, and maintain project boards.&lt;/li&gt; 
 &lt;li&gt;CI/CD &amp;amp; Workflow Intelligence: Monitor GitHub Actions workflow runs, analyze build failures, manage releases, and get insights into your development pipeline.&lt;/li&gt; 
 &lt;li&gt;Code Analysis: Examine security findings, review Dependabot alerts, understand code patterns, and get comprehensive insights into your codebase.&lt;/li&gt; 
 &lt;li&gt;Team Collaboration: Access discussions, manage notifications, analyze team activity, and streamline processes for your team.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Built for developers who want to connect their AI tools to GitHub context and capabilities, from simple natural language queries to complex multi-step agent workflows.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Remote GitHub MCP Server&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://insiders.vscode.dev/redirect/mcp/install?name=github&amp;amp;config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square&amp;amp;logo=visualstudiocode&amp;amp;logoColor=white&quot; alt=&quot;Install in VS Code&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://insiders.vscode.dev/redirect/mcp/install?name=github&amp;amp;config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D&amp;amp;quality=insiders&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=flat-square&amp;amp;logo=visualstudiocode&amp;amp;logoColor=white&quot; alt=&quot;Install in VS Code Insiders&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://aka.ms/vs/mcp-install?%7B%22name%22%3A%22github%22%2C%22gallery%22%3Atrue%2C%22url%22%3A%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Visual_Studio-Install_Server-C16FDE?style=flat-square&amp;amp;logo=visualstudio&amp;amp;logoColor=white&quot; alt=&quot;Install in Visual Studio&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;The remote GitHub MCP Server is hosted by GitHub and provides the easiest method for getting up and running. If your MCP host does not support remote MCP servers, don&#39;t worry! You can use the &lt;a href=&quot;https://github.com/github/github-mcp-server?tab=readme-ov-file#local-github-mcp-server&quot;&gt;local version of the GitHub MCP Server&lt;/a&gt; instead.&lt;/p&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;A compatible MCP host with remote server support (VS Code 1.101+, Claude Desktop, Cursor, Windsurf, etc.)&lt;/li&gt; 
 &lt;li&gt;Any applicable &lt;a href=&quot;https://github.com/github/github-mcp-server/raw/main/docs/policies-and-governance.md&quot;&gt;policies enabled&lt;/a&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Install in VS Code&lt;/h3&gt; 
&lt;p&gt;For quick installation, use one of the one-click install buttons above. Once you complete that flow, toggle Agent mode (located by the Copilot Chat text input) and the server will start. Make sure you&#39;re using &lt;a href=&quot;https://code.visualstudio.com/updates/v1_101&quot;&gt;VS Code 1.101&lt;/a&gt; or &lt;a href=&quot;https://code.visualstudio.com/updates&quot;&gt;later&lt;/a&gt; for remote MCP and OAuth support.&lt;/p&gt; 
&lt;p&gt;Alternatively, to manually configure VS Code, choose the appropriate JSON block from the examples below and add it to your host configuration:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th&gt;Using OAuth&lt;/th&gt;
   &lt;th&gt;Using a GitHub PAT&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;th align=&quot;left&quot; colspan=&quot;2&quot;&gt;VS Code (version 1.101 or greater)&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr valign=&quot;top&quot;&gt; 
   &lt;td&gt; &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;github&quot;: {
      &quot;type&quot;: &quot;http&quot;,
      &quot;url&quot;: &quot;https://api.githubcopilot.com/mcp/&quot;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;github&quot;: {
      &quot;type&quot;: &quot;http&quot;,
      &quot;url&quot;: &quot;https://api.githubcopilot.com/mcp/&quot;,
      &quot;headers&quot;: {
        &quot;Authorization&quot;: &quot;Bearer ${input:github_mcp_pat}&quot;
      }
    }
  },
  &quot;inputs&quot;: [
    {
      &quot;type&quot;: &quot;promptString&quot;,
      &quot;id&quot;: &quot;github_mcp_pat&quot;,
      &quot;description&quot;: &quot;GitHub Personal Access Token&quot;,
      &quot;password&quot;: true
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Install in other MCP hosts&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-copilot-cli.md&quot;&gt;Copilot CLI&lt;/a&gt;&lt;/strong&gt; - Installation guide for GitHub Copilot CLI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-other-copilot-ides.md&quot;&gt;GitHub Copilot in other IDEs&lt;/a&gt;&lt;/strong&gt; - Installation for JetBrains, Visual Studio, Eclipse, and Xcode with GitHub Copilot&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-claude.md&quot;&gt;Claude Applications&lt;/a&gt;&lt;/strong&gt; - Installation guide for Claude Desktop and Claude Code CLI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-codex.md&quot;&gt;Codex&lt;/a&gt;&lt;/strong&gt; - Installation guide for OpenAI Codex&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-cursor.md&quot;&gt;Cursor&lt;/a&gt;&lt;/strong&gt; - Installation guide for Cursor IDE&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-opencode.md&quot;&gt;OpenCode&lt;/a&gt;&lt;/strong&gt; - Installation guide for the OpenCode terminal agent&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-windsurf.md&quot;&gt;Windsurf&lt;/a&gt;&lt;/strong&gt; - Installation guide for Windsurf IDE&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-zed.md&quot;&gt;Zed&lt;/a&gt;&lt;/strong&gt; - Installation guide for Zed editor&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-rovo-dev-cli.md&quot;&gt;Rovo Dev CLI&lt;/a&gt;&lt;/strong&gt; - Installation guide for Rovo Dev CLI&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Each MCP host application needs to configure a GitHub App or OAuth App to support remote access via OAuth. Any host application that supports remote MCP servers should support the remote GitHub server with PAT authentication. Configuration details and support levels vary by host. Make sure to refer to the host application&#39;s documentation for more info.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Configuration&lt;/h3&gt; 
&lt;h4&gt;Toolset configuration&lt;/h4&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/remote-server.md&quot;&gt;Remote Server Documentation&lt;/a&gt; for full details on remote server configuration, toolsets, headers, and advanced usage. This file provides comprehensive instructions and examples for connecting, customizing, and installing the remote GitHub MCP Server in VS Code and other MCP hosts.&lt;/p&gt; 
&lt;p&gt;When no toolsets are specified, &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/#default-toolset&quot;&gt;default toolsets&lt;/a&gt; are used.&lt;/p&gt; 
&lt;h4&gt;Insiders Mode&lt;/h4&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Try new features early!&lt;/strong&gt; The remote server offers an insiders version with early access to new features and experimental tools.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th&gt;Using URL Path&lt;/th&gt;
   &lt;th&gt;Using Header&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr valign=&quot;top&quot;&gt; 
   &lt;td&gt; &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;github&quot;: {
      &quot;type&quot;: &quot;http&quot;,
      &quot;url&quot;: &quot;https://api.githubcopilot.com/mcp/insiders&quot;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;github&quot;: {
      &quot;type&quot;: &quot;http&quot;,
      &quot;url&quot;: &quot;https://api.githubcopilot.com/mcp/&quot;,
      &quot;headers&quot;: {
        &quot;X-MCP-Insiders&quot;: &quot;true&quot;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/remote-server.md#insiders-mode&quot;&gt;Remote Server Documentation&lt;/a&gt; for more details and examples, and &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/insiders-features.md&quot;&gt;Insiders Features&lt;/a&gt; for a full list of what&#39;s available.&lt;/p&gt; 
&lt;h4&gt;GitHub Enterprise&lt;/h4&gt; 
&lt;h5&gt;GitHub Enterprise Cloud with data residency (&lt;a href=&quot;http://ghe.com&quot;&gt;ghe.com&lt;/a&gt;)&lt;/h5&gt; 
&lt;p&gt;GitHub Enterprise Cloud can also make use of the remote server.&lt;/p&gt; 
&lt;p&gt;Example for &lt;code&gt;https://octocorp.ghe.com&lt;/code&gt; with GitHub PAT token:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{
    ...
    &quot;github-octocorp&quot;: {
      &quot;type&quot;: &quot;http&quot;,
      &quot;url&quot;: &quot;https://copilot-api.octocorp.ghe.com/mcp&quot;,
      &quot;headers&quot;: {
        &quot;Authorization&quot;: &quot;Bearer ${input:github_mcp_pat}&quot;
      }
    },
    ...
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; When using OAuth with GitHub Enterprise with VS Code and GitHub Copilot, you also need to configure your VS Code settings to point to your GitHub Enterprise instance - see &lt;a href=&quot;https://docs.github.com/en/enterprise-cloud@latest/copilot/how-tos/configure-personal-settings/authenticate-to-ghecom&quot;&gt;Authenticate from VS Code&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h5&gt;GitHub Enterprise Server&lt;/h5&gt; 
&lt;p&gt;GitHub Enterprise Server does not support remote server hosting. Please refer to &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/#github-enterprise-server-and-enterprise-cloud-with-data-residency-ghecom&quot;&gt;GitHub Enterprise Server and Enterprise Cloud with data residency (ghe.com)&lt;/a&gt; from the local server configuration.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Local GitHub MCP Server&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://insiders.vscode.dev/redirect/mcp/install?name=github&amp;amp;config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-p%22%2C%22127.0.0.1%3A8085%3A8085%22%2C%22-e%22%2C%22GITHUB_OAUTH_CALLBACK_PORT%22%2C%22ghcr.io%2Fgithub%2Fgithub-mcp-server%22%5D%2C%22env%22%3A%7B%22GITHUB_OAUTH_CALLBACK_PORT%22%3A%228085%22%7D%7D&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square&amp;amp;logo=visualstudiocode&amp;amp;logoColor=white&quot; alt=&quot;Install with Docker in VS Code&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://insiders.vscode.dev/redirect/mcp/install?name=github&amp;amp;config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-p%22%2C%22127.0.0.1%3A8085%3A8085%22%2C%22-e%22%2C%22GITHUB_OAUTH_CALLBACK_PORT%22%2C%22ghcr.io%2Fgithub%2Fgithub-mcp-server%22%5D%2C%22env%22%3A%7B%22GITHUB_OAUTH_CALLBACK_PORT%22%3A%228085%22%7D%7D&amp;amp;quality=insiders&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=flat-square&amp;amp;logo=visualstudiocode&amp;amp;logoColor=white&quot; alt=&quot;Install with Docker in VS Code Insiders&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://aka.ms/vs/mcp-install?%7B%22name%22%3A%22github%22%2C%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-p%22%2C%22127.0.0.1%3A8085%3A8085%22%2C%22-e%22%2C%22GITHUB_OAUTH_CALLBACK_PORT%3D8085%22%2C%22ghcr.io%2Fgithub%2Fgithub-mcp-server%22%5D%7D&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Visual_Studio-Install_Server-C16FDE?style=flat-square&amp;amp;logo=visualstudio&amp;amp;logoColor=white&quot; alt=&quot;Install with Docker in Visual Studio&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;To run the server in a container, you will need to have &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; installed.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Once Docker is installed, you will also need to ensure Docker is running. The Docker image is available at &lt;code&gt;ghcr.io/github/github-mcp-server&lt;/code&gt;. The image is public; if you get errors on pull, you may have an expired token and need to &lt;code&gt;docker logout ghcr.io&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Authentication.&lt;/strong&gt; On &lt;a href=&quot;http://github.com&quot;&gt;github.com&lt;/a&gt; you don&#39;t need to create anything up front — the one-click buttons above log you in with OAuth on first use (a browser-based flow; the token is kept in memory only). The Docker buttons publish a fixed callback port (&lt;code&gt;127.0.0.1:8085&lt;/code&gt;) so the container&#39;s login callback is reachable. See &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/oauth-login.md&quot;&gt;Local Server OAuth Login&lt;/a&gt;&lt;/strong&gt; for how it works, headless/device-code fallback, and bringing your own OAuth or GitHub App (required for GitHub Enterprise Server and &lt;code&gt;ghe.com&lt;/code&gt;).&lt;/p&gt; &lt;p&gt;Prefer a token? You can still authenticate with a &lt;a href=&quot;https://github.com/settings/personal-access-tokens/new&quot;&gt;GitHub Personal Access Token&lt;/a&gt; by setting &lt;code&gt;GITHUB_PERSONAL_ACCESS_TOKEN&lt;/code&gt; instead (it takes precedence over OAuth). The MCP server can use many of the GitHub APIs, so enable the permissions that you feel comfortable granting your AI tools (to learn more about access tokens, please check out the &lt;a href=&quot;https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens&quot;&gt;documentation&lt;/a&gt;).&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;details&gt;
 &lt;summary&gt;&lt;b&gt;Handling PATs Securely&lt;/b&gt;&lt;/summary&gt; 
 &lt;h3&gt;Environment Variables (Recommended)&lt;/h3&gt; 
 &lt;p&gt;To keep your GitHub PAT secure and reusable across different MCP hosts:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Store your PAT in environment variables&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export GITHUB_PAT=your_token_here
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Or create a &lt;code&gt;.env&lt;/code&gt; file:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-env&quot;&gt;GITHUB_PAT=your_token_here
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Protect your &lt;code&gt;.env&lt;/code&gt; file&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Add to .gitignore to prevent accidental commits
echo &quot;.env&quot; &amp;gt;&amp;gt; .gitignore
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Reference the token in configurations&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# CLI usage
claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server

# In config files (where supported)
&quot;env&quot;: {
  &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;: &quot;$GITHUB_PAT&quot;
}
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Environment variable support varies by host app and IDE. Some applications (like Windsurf) require hardcoded tokens in config files.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;h3&gt;Token Security Best Practices&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Minimum scopes&lt;/strong&gt;: Only grant necessary permissions&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt; - Repository operations&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;read:packages&lt;/code&gt; - Docker image access&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;read:org&lt;/code&gt; - Organization team access&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Separate tokens&lt;/strong&gt;: Use different PATs for different projects/environments&lt;/p&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Regular rotation&lt;/strong&gt;: Update tokens periodically&lt;/p&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Never commit&lt;/strong&gt;: Keep tokens out of version control&lt;/p&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;File permissions&lt;/strong&gt;: Restrict access to config files containing tokens&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod 600 ~/.your-app/config.json
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h3&gt;GitHub Enterprise Server and Enterprise Cloud with data residency (&lt;a href=&quot;http://ghe.com&quot;&gt;ghe.com&lt;/a&gt;)&lt;/h3&gt; 
&lt;p&gt;The flag &lt;code&gt;--gh-host&lt;/code&gt; and the environment variable &lt;code&gt;GITHUB_HOST&lt;/code&gt; can be used to set the hostname for GitHub Enterprise Server or GitHub Enterprise Cloud with data residency.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;For GitHub Enterprise Server, prefix the hostname with the &lt;code&gt;https://&lt;/code&gt; URI scheme. HTTPS is required and enforced: non-HTTPS hosts are refused so that credentials are never sent over cleartext (the only exception is a loopback host such as &lt;code&gt;http://localhost&lt;/code&gt; for local development).&lt;/li&gt; 
 &lt;li&gt;For GitHub Enterprise Cloud with data residency, use &lt;code&gt;https://YOURSUBDOMAIN.ghe.com&lt;/code&gt; as the hostname.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&quot;github&quot;: {
    &quot;command&quot;: &quot;docker&quot;,
    &quot;args&quot;: [
    &quot;run&quot;,
    &quot;-i&quot;,
    &quot;--rm&quot;,
    &quot;-e&quot;,
    &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;,
    &quot;-e&quot;,
    &quot;GITHUB_HOST&quot;,
    &quot;ghcr.io/github/github-mcp-server&quot;
    ],
    &quot;env&quot;: {
        &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;: &quot;${input:github_token}&quot;,
        &quot;GITHUB_HOST&quot;: &quot;https://&amp;lt;your GHES or ghe.com domain name&amp;gt;&quot;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Install in GitHub Copilot on VS Code&lt;/h3&gt; 
&lt;p&gt;For quick installation, use one of the one-click install buttons above. Once you complete that flow, toggle Agent mode (located by the Copilot Chat text input) and the server will start.&lt;/p&gt; 
&lt;p&gt;More about using MCP server tools in VS Code&#39;s &lt;a href=&quot;https://code.visualstudio.com/docs/copilot/chat/mcp-servers&quot;&gt;agent mode documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Install in GitHub Copilot on other IDEs (JetBrains, Visual Studio, Eclipse, etc.)&lt;/p&gt; 
&lt;p&gt;Add one of the following JSON blocks to your IDE&#39;s MCP settings.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Log in with OAuth (no token to create or store).&lt;/strong&gt; On &lt;a href=&quot;http://github.com&quot;&gt;github.com&lt;/a&gt; the official image already includes the app credentials, so you provide none yourself: it runs a browser-based login on first use and keeps the resulting token &lt;strong&gt;in memory only&lt;/strong&gt;. In Docker this needs a fixed callback port published to loopback so the container&#39;s login callback is reachable:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcp&quot;: {
    &quot;servers&quot;: {
      &quot;github&quot;: {
        &quot;command&quot;: &quot;docker&quot;,
        &quot;args&quot;: [
          &quot;run&quot;,
          &quot;-i&quot;,
          &quot;--rm&quot;,
          &quot;-p&quot;,
          &quot;127.0.0.1:8085:8085&quot;,
          &quot;-e&quot;,
          &quot;GITHUB_OAUTH_CALLBACK_PORT&quot;,
          &quot;ghcr.io/github/github-mcp-server&quot;
        ],
        &quot;env&quot;: {
          &quot;GITHUB_OAUTH_CALLBACK_PORT&quot;: &quot;8085&quot;
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/oauth-login.md&quot;&gt;Local Server OAuth Login&lt;/a&gt;&lt;/strong&gt; for the native-binary flow (no fixed port needed), the headless/device-code fallback, GitHub Enterprise Server / &lt;code&gt;ghe.com&lt;/code&gt;, and bringing your own OAuth or GitHub App.&lt;/p&gt; 
&lt;p&gt;For non-interactive stdio deployments, see &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/github-app-auth.md&quot;&gt;GitHub App Authentication&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Or authenticate with a Personal Access Token.&lt;/strong&gt; Set &lt;code&gt;GITHUB_PERSONAL_ACCESS_TOKEN&lt;/code&gt; instead (it takes precedence over OAuth):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcp&quot;: {
    &quot;inputs&quot;: [
      {
        &quot;type&quot;: &quot;promptString&quot;,
        &quot;id&quot;: &quot;github_token&quot;,
        &quot;description&quot;: &quot;GitHub Personal Access Token&quot;,
        &quot;password&quot;: true
      }
    ],
    &quot;servers&quot;: {
      &quot;github&quot;: {
        &quot;command&quot;: &quot;docker&quot;,
        &quot;args&quot;: [
          &quot;run&quot;,
          &quot;-i&quot;,
          &quot;--rm&quot;,
          &quot;-e&quot;,
          &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;,
          &quot;ghcr.io/github/github-mcp-server&quot;
        ],
        &quot;env&quot;: {
          &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;: &quot;${input:github_token}&quot;
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Optionally, you can add a similar example (i.e. without the mcp key) to a file called &lt;code&gt;.vscode/mcp.json&lt;/code&gt; in your workspace. This will allow you to share the configuration with other host applications that accept the same format.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Example JSON block without the MCP key included&lt;/b&gt;&lt;/summary&gt; 
 &lt;br /&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;inputs&quot;: [
    {
      &quot;type&quot;: &quot;promptString&quot;,
      &quot;id&quot;: &quot;github_token&quot;,
      &quot;description&quot;: &quot;GitHub Personal Access Token&quot;,
      &quot;password&quot;: true
    }
  ],
  &quot;servers&quot;: {
    &quot;github&quot;: {
      &quot;command&quot;: &quot;docker&quot;,
      &quot;args&quot;: [
        &quot;run&quot;,
        &quot;-i&quot;,
        &quot;--rm&quot;,
        &quot;-e&quot;,
        &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;,
        &quot;ghcr.io/github/github-mcp-server&quot;
      ],
      &quot;env&quot;: {
        &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;: &quot;${input:github_token}&quot;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;h3&gt;Install in Other MCP Hosts&lt;/h3&gt; 
&lt;p&gt;For other MCP host applications, please refer to our installation guides:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-copilot-cli.md&quot;&gt;Copilot CLI&lt;/a&gt;&lt;/strong&gt; - Installation guide for GitHub Copilot CLI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-other-copilot-ides.md&quot;&gt;GitHub Copilot in other IDEs&lt;/a&gt;&lt;/strong&gt; - Installation for JetBrains, Visual Studio, Eclipse, and Xcode with GitHub Copilot&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-claude.md&quot;&gt;Claude Code &amp;amp; Claude Desktop&lt;/a&gt;&lt;/strong&gt; - Installation guide for Claude Code and Claude Desktop&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-cursor.md&quot;&gt;Cursor&lt;/a&gt;&lt;/strong&gt; - Installation guide for Cursor IDE&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-gemini-cli.md&quot;&gt;Google Gemini CLI&lt;/a&gt;&lt;/strong&gt; - Installation guide for Google Gemini CLI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-opencode.md&quot;&gt;OpenCode&lt;/a&gt;&lt;/strong&gt; - Installation guide for the OpenCode terminal agent&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-windsurf.md&quot;&gt;Windsurf&lt;/a&gt;&lt;/strong&gt; - Installation guide for Windsurf IDE&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides/install-zed.md&quot;&gt;Zed&lt;/a&gt;&lt;/strong&gt; - Installation guide for Zed editor&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For a complete overview of all installation options, see our &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/installation-guides&quot;&gt;Installation Guides Index&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Any host application that supports local MCP servers should be able to access the local GitHub MCP server. However, the specific configuration process, syntax and stability of the integration will vary by host application. While many may follow a similar format to the examples above, this is not guaranteed. Please refer to your host application&#39;s documentation for the correct MCP configuration syntax and setup process.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Build from source&lt;/h3&gt; 
&lt;p&gt;If you don&#39;t have Docker, you can use &lt;code&gt;go build&lt;/code&gt; to build the binary in the &lt;code&gt;cmd/github-mcp-server&lt;/code&gt; directory, and use the &lt;code&gt;github-mcp-server stdio&lt;/code&gt; command with the &lt;code&gt;GITHUB_PERSONAL_ACCESS_TOKEN&lt;/code&gt; environment variable set to your token. To specify the output location of the build, use the &lt;code&gt;-o&lt;/code&gt; flag. You should configure your server to use the built executable as its &lt;code&gt;command&lt;/code&gt;. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-JSON&quot;&gt;{
  &quot;mcp&quot;: {
    &quot;servers&quot;: {
      &quot;github&quot;: {
        &quot;command&quot;: &quot;/path/to/github-mcp-server&quot;,
        &quot;args&quot;: [&quot;stdio&quot;],
        &quot;env&quot;: {
          &quot;GITHUB_PERSONAL_ACCESS_TOKEN&quot;: &quot;&amp;lt;YOUR_TOKEN&amp;gt;&quot;
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;CLI utilities&lt;/h3&gt; 
&lt;p&gt;The &lt;code&gt;github-mcp-server&lt;/code&gt; binary includes a few CLI subcommands that are helpful for debugging and exploring the server.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;github-mcp-server tool-search &quot;&amp;lt;query&amp;gt;&quot;&lt;/code&gt; searches tools by name, description, and input parameter names. Use &lt;code&gt;--max-results&lt;/code&gt; to return more matches. Example (color output requires a TTY; use &lt;code&gt;docker run -t&lt;/code&gt; (or &lt;code&gt;-it&lt;/code&gt;) when running in Docker):&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -it --rm ghcr.io/github/github-mcp-server tool-search &quot;issue&quot; --max-results 5
github-mcp-server tool-search &quot;issue&quot; --max-results 5
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Tool Configuration&lt;/h2&gt; 
&lt;p&gt;The GitHub MCP Server supports enabling or disabling specific groups of functionalities via the &lt;code&gt;--toolsets&lt;/code&gt; flag. This allows you to control which GitHub API capabilities are available to your AI tools. Enabling only the toolsets that you need can help the LLM with tool choice and reduce the context size.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Toolsets are not limited to Tools. Relevant MCP Resources and Prompts are also included where applicable.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;When no toolsets are specified, &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/#default-toolset&quot;&gt;default toolsets&lt;/a&gt; are used.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Looking for examples?&lt;/strong&gt; See the &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/server-configuration.md&quot;&gt;Server Configuration Guide&lt;/a&gt; for common recipes like minimal setups, read-only mode, and combining tools with toolsets.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Specifying Toolsets&lt;/h4&gt; 
&lt;p&gt;To specify toolsets you want available to the LLM, you can pass an allow-list in two ways:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Using Command Line Argument&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;github-mcp-server --toolsets repos,issues,pull_requests,actions,code_security
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Using Environment Variable&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GITHUB_TOOLSETS=&quot;repos,issues,pull_requests,actions,code_security&quot; ./github-mcp-server
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;The environment variable &lt;code&gt;GITHUB_TOOLSETS&lt;/code&gt; takes precedence over the command line argument if both are provided.&lt;/p&gt; 
&lt;h4&gt;Specifying Individual Tools&lt;/h4&gt; 
&lt;p&gt;You can also configure specific tools using the &lt;code&gt;--tools&lt;/code&gt; flag. Tools can be used independently or combined with toolsets for fine-grained control.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Using Command Line Argument&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;github-mcp-server --tools get_file_contents,issue_read,create_pull_request
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Using Environment Variable&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GITHUB_TOOLS=&quot;get_file_contents,issue_read,create_pull_request&quot; ./github-mcp-server
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Combining with Toolsets&lt;/strong&gt; (additive):&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;github-mcp-server --toolsets repos,issues --tools get_gist
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;This registers all tools from &lt;code&gt;repos&lt;/code&gt; and &lt;code&gt;issues&lt;/code&gt; toolsets, plus &lt;code&gt;get_gist&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Important Notes:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Tools and toolsets can be used together&lt;/li&gt; 
 &lt;li&gt;Read-only mode takes priority: write tools are skipped if &lt;code&gt;--read-only&lt;/code&gt; is set, even if explicitly requested via &lt;code&gt;--tools&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Tool names must match exactly (e.g., &lt;code&gt;get_file_contents&lt;/code&gt;, not &lt;code&gt;getFileContents&lt;/code&gt;). Invalid tool names will cause the server to fail at startup with an error message&lt;/li&gt; 
 &lt;li&gt;When tools are renamed, old names are preserved as aliases for backward compatibility. See &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/docs/tool-renaming.md&quot;&gt;Tool Renaming&lt;/a&gt; for details.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Using Toolsets With Docker&lt;/h3&gt; 
&lt;p&gt;When using Docker, you can pass the toolsets as environment variables:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=&amp;lt;your-token&amp;gt; \
  -e GITHUB_TOOLSETS=&quot;repos,issues,pull_requests,actions,code_security&quot; \
  ghcr.io/github/github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Using Tools With Docker&lt;/h3&gt; 
&lt;p&gt;When using Docker, you can pass specific tools as environment variables. You can also combine tools with toolsets:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Tools only
docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=&amp;lt;your-token&amp;gt; \
  -e GITHUB_TOOLS=&quot;get_file_contents,issue_read,create_pull_request&quot; \
  ghcr.io/github/github-mcp-server

# Tools combined with toolsets (additive)
docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=&amp;lt;your-token&amp;gt; \
  -e GITHUB_TOOLSETS=&quot;repos,issues&quot; \
  -e GITHUB_TOOLS=&quot;get_gist&quot; \
  ghcr.io/github/github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Special toolsets&lt;/h3&gt; 
&lt;h4&gt;&quot;all&quot; toolset&lt;/h4&gt; 
&lt;p&gt;The special toolset &lt;code&gt;all&lt;/code&gt; can be provided to enable all available toolsets regardless of any other configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./github-mcp-server --toolsets all
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or using the environment variable:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GITHUB_TOOLSETS=&quot;all&quot; ./github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;&quot;default&quot; toolset&lt;/h4&gt; 
&lt;p&gt;The default toolset &lt;code&gt;default&lt;/code&gt; is the configuration that gets passed to the server if no toolsets are specified.&lt;/p&gt; 
&lt;p&gt;The default configuration is:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;context&lt;/li&gt; 
 &lt;li&gt;repos&lt;/li&gt; 
 &lt;li&gt;issues&lt;/li&gt; 
 &lt;li&gt;pull_requests&lt;/li&gt; 
 &lt;li&gt;users&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To keep the default configuration and add additional toolsets:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GITHUB_TOOLSETS=&quot;default,stargazers&quot; ./github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Insiders Mode&lt;/h3&gt; 
&lt;p&gt;The local GitHub MCP Server offers an insiders version with early access to new features and experimental tools.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Using Command Line Argument&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./github-mcp-server --insiders
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Using Environment Variable&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GITHUB_INSIDERS=true ./github-mcp-server
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;When using Docker:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=&amp;lt;your-token&amp;gt; \
  -e GITHUB_INSIDERS=true \
  ghcr.io/github/github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Available Toolsets&lt;/h3&gt; 
&lt;p&gt;The following sets of tools are available:&lt;/p&gt; 
&lt;!-- START AUTOMATED TOOLSETS --&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;&lt;/th&gt; 
   &lt;th&gt;Toolset&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;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/person-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/person-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/person-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;person&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;context&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Strongly recommended&lt;/strong&gt;: Tools that provide context about the current user and GitHub context you are operating in&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/workflow-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/workflow-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/workflow-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;workflow&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;actions&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Actions workflows and CI/CD operations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/code-square-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/code-square-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/code-square-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;code-square&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;code_quality&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Code Quality related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/codescan-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/codescan-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/codescan-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;codescan&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;code_security&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Code security related tools, such as GitHub Code Scanning&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/copilot-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/copilot-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/copilot-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;copilot&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;copilot&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Copilot related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/copilot-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/copilot-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/copilot-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;copilot&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;copilot_issue_intents&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Opt-in Copilot issue assignment tools that carry intent metadata (rationale, confidence, suggestion)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/dependabot-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/dependabot-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/dependabot-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;dependabot&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;dependabot&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Dependabot tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/comment-discussion-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/comment-discussion-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/comment-discussion-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;comment-discussion&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;discussions&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Discussions related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/logo-gist-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/logo-gist-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/logo-gist-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;logo-gist&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;gists&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Gist related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/git-branch-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/git-branch-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/git-branch-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;git-branch&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;git&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Git API related tools for low-level Git operations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/issue-opened-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/issue-opened-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/issue-opened-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;issue-opened&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;issues&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Issues related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/tag-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/tag-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/tag-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;tag&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;labels&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Labels related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/bell-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/bell-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/bell-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;bell&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;notifications&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Notifications related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/organization-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/organization-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/organization-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;organization&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;orgs&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Organization related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/project-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/project-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/project-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;project&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;projects&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Projects related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/git-pull-request-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/git-pull-request-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/git-pull-request-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;git-pull-request&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;pull_requests&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Pull Request related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/repo-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/repo-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/repo-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;repo&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;repos&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Repository related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/shield-lock-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/shield-lock-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/shield-lock-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;shield-lock&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;secret_protection&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Secret protection related tools, such as GitHub Secret Scanning&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/shield-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/shield-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/shield-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;shield&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;security_advisories&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Security advisories related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/star-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/star-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/star-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;star&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;stargazers&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Stargazers related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;
    &lt;picture&gt;
     &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/people-dark.png&quot; /&gt;
     &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/people-light.png&quot; /&gt;
     &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/people-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;people&quot; /&gt;
    &lt;/picture&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub User related tools&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- END AUTOMATED TOOLSETS --&gt; 
&lt;h3&gt;Additional Toolsets in Remote GitHub MCP Server&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Toolset&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;copilot&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Copilot related tools (e.g. Copilot Coding Agent)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;copilot_spaces&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Copilot Spaces related tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;github_support_docs_search&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Search docs to answer GitHub product and support questions&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Tools&lt;/h2&gt; 
&lt;!-- START AUTOMATED TOOLS --&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/workflow-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/workflow-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/workflow-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;workflow&quot; /&gt;
  &lt;/picture&gt; Actions&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;actions_get&lt;/strong&gt; - Get details of GitHub Actions resources (workflows, workflow runs, jobs, and artifacts)&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The method to execute (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;resource_id&lt;/code&gt;: The unique identifier of the resource. This will vary based on the &quot;method&quot; provided, so ensure you provide the correct ID: 
     &lt;ul&gt; 
      &lt;li&gt;Provide a workflow ID or workflow file name (e.g. ci.yaml) for &#39;get_workflow&#39; method.&lt;/li&gt; 
      &lt;li&gt;Provide a workflow run ID for &#39;get_workflow_run&#39;, &#39;get_workflow_run_usage&#39;, and &#39;get_workflow_run_logs_url&#39; methods.&lt;/li&gt; 
      &lt;li&gt;Provide an artifact ID for &#39;download_workflow_run_artifact&#39; method.&lt;/li&gt; 
      &lt;li&gt;Provide a job ID for &#39;get_workflow_job&#39; method. (string, required)&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;actions_list&lt;/strong&gt; - List GitHub Actions workflows in a repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The action to perform (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (default: 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;per_page&lt;/code&gt;: Results per page for pagination (default: 30, max: 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;resource_id&lt;/code&gt;: The unique identifier of the resource. This will vary based on the &quot;method&quot; provided, so ensure you provide the correct ID: 
     &lt;ul&gt; 
      &lt;li&gt;Do not provide any resource ID for &#39;list_workflows&#39; method.&lt;/li&gt; 
      &lt;li&gt;Provide a workflow ID or workflow file name (e.g. ci.yaml) for &#39;list_workflow_runs&#39; method, or omit to list all workflow runs in the repository.&lt;/li&gt; 
      &lt;li&gt;Provide a workflow run ID for &#39;list_workflow_jobs&#39; and &#39;list_workflow_run_artifacts&#39; methods. (string, optional)&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;workflow_jobs_filter&lt;/code&gt;: Filters for workflow jobs. &lt;strong&gt;ONLY&lt;/strong&gt; used when method is &#39;list_workflow_jobs&#39; (object, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;workflow_runs_filter&lt;/code&gt;: Filters for workflow runs. &lt;strong&gt;ONLY&lt;/strong&gt; used when method is &#39;list_workflow_runs&#39; (object, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;actions_run_trigger&lt;/strong&gt; - Trigger GitHub Actions workflow actions&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;inputs&lt;/code&gt;: Inputs the workflow accepts. Only used for &#39;run_workflow&#39; method. (object, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The method to execute (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;ref&lt;/code&gt;: The git reference for the workflow. The reference can be a branch or tag name. Required for &#39;run_workflow&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;run_id&lt;/code&gt;: The ID of the workflow run. Required for all methods except &#39;run_workflow&#39;. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;workflow_id&lt;/code&gt;: The workflow ID (numeric) or workflow file name (e.g., main.yml, ci.yaml). Required for &#39;run_workflow&#39; method. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_job_logs&lt;/strong&gt; - Get GitHub Actions workflow job logs&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;failed_only&lt;/code&gt;: When true, gets logs for all failed jobs in the workflow run specified by run_id. Requires run_id to be provided. (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;job_id&lt;/code&gt;: The unique identifier of the workflow job. Required when getting logs for a single job. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;return_content&lt;/code&gt;: Returns actual log content instead of URLs (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;run_id&lt;/code&gt;: The unique identifier of the workflow run. Required when failed_only is true to get logs for all failed jobs in the run. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;tail_lines&lt;/code&gt;: Number of lines to return from the end of the log (number, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/code-square-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/code-square-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/code-square-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;code-square&quot; /&gt;
  &lt;/picture&gt; Code Quality&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;get_code_quality_finding&lt;/strong&gt; - Get code quality finding 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;findingNumber&lt;/code&gt;: The number of the finding. (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/codescan-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/codescan-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/codescan-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;codescan&quot; /&gt;
  &lt;/picture&gt; Code Security&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_code_scanning_alert&lt;/strong&gt; - Get code scanning alert&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;alertNumber&lt;/code&gt;: The number of the alert. (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_code_scanning_alerts&lt;/strong&gt; - List code scanning alerts&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;ref&lt;/code&gt;: The Git reference for the results you want to list. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;severity&lt;/code&gt;: Filter code scanning alerts by severity (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter code scanning alerts by state. Defaults to open (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;tool_name&lt;/code&gt;: The name of the tool used for code scanning. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/person-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/person-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/person-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;person&quot; /&gt;
  &lt;/picture&gt; Context&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_me&lt;/strong&gt; - Get my user profile&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;No parameters required&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_team_members&lt;/strong&gt; - Get team members&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;read:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;admin:org&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;, &lt;code&gt;write:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;org&lt;/code&gt;: Organization login (owner) that contains the team. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;team_slug&lt;/code&gt;: Team slug (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_teams&lt;/strong&gt; - Get teams&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;read:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;admin:org&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;, &lt;code&gt;write:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;user&lt;/code&gt;: Username to get teams for. If not provided, uses the authenticated user. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/copilot-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/copilot-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/copilot-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;copilot&quot; /&gt;
  &lt;/picture&gt; Copilot&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;assign_copilot_to_issue&lt;/strong&gt; - Assign Copilot to issue&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;base_ref&lt;/code&gt;: Git reference (e.g., branch) that the agent will start its work from. If not specified, defaults to the repository&#39;s default branch (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;custom_instructions&lt;/code&gt;: Optional custom instructions to guide the agent beyond the issue body. Use this to provide additional context, constraints, or guidance that is not captured in the issue description (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: Issue number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;request_copilot_review&lt;/strong&gt; - Request Copilot review&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/copilot-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/copilot-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/copilot-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;copilot&quot; /&gt;
  &lt;/picture&gt; Copilot Issue Intents&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;assign_copilot_to_issue_with_intent&lt;/strong&gt; - Assign Copilot to issue with intent 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;base_ref&lt;/code&gt;: Git reference (e.g., branch) that the agent will start its work from. If not specified, defaults to the repository&#39;s default branch. Ignored when is_suggestion is true (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;confidence&lt;/code&gt;: How confident you are in this choice. &#39;HIGH&#39; for clear signal or explicit user request, &#39;MEDIUM&#39; for reasonable inference with some ambiguity, &#39;LOW&#39; for best guess with limited signal. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;custom_instructions&lt;/code&gt;: Optional custom instructions to guide the agent beyond the issue body. Ignored when is_suggestion is true (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;is_suggestion&lt;/code&gt;: If true, records a pending Copilot assignment intent rather than launching the agent. Approval later supplies the launch context; base_ref and custom_instructions are ignored in this case. (boolean, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: Issue number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;rationale&lt;/code&gt;: One concise sentence explaining what specifically about the issue led to choosing Copilot. State the concrete signal (e.g. &#39;Well-scoped task with clear acceptance criteria&#39;). (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/dependabot-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/dependabot-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/dependabot-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;dependabot&quot; /&gt;
  &lt;/picture&gt; Dependabot&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_dependabot_alert&lt;/strong&gt; - Get dependabot alert&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;alertNumber&lt;/code&gt;: The number of the alert. (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_dependabot_alerts&lt;/strong&gt; - List dependabot alerts&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after&lt;/code&gt;: Cursor for pagination. Use the cursor from the previous response. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;severity&lt;/code&gt;: Filter dependabot alerts by severity (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter dependabot alerts by state. Defaults to open (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/comment-discussion-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/comment-discussion-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/comment-discussion-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;comment-discussion&quot; /&gt;
  &lt;/picture&gt; Discussions&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;discussion_comment_write&lt;/strong&gt; - Manage discussion comments&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: Comment content (required for &#39;add&#39;, &#39;reply&#39;, and &#39;update&#39; methods) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;commentNodeID&lt;/code&gt;: The Node ID of the discussion comment (required for &#39;reply&#39;, &#39;update&#39;, &#39;delete&#39;, &#39;mark_answer&#39;, and &#39;unmark_answer&#39; methods). For &#39;reply&#39;, this is the top-level comment to reply to; GitHub Discussions only support one level of nesting. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;discussionNumber&lt;/code&gt;: Discussion number (required for &#39;add&#39; and &#39;reply&#39; methods) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: Write operation to perform on a discussion comment. Options are: 
     &lt;ul&gt; 
      &lt;li&gt;&#39;add&#39; - adds a new top-level comment to a discussion.&lt;/li&gt; 
      &lt;li&gt;&#39;reply&#39; - replies to a top-level discussion comment (GitHub Discussions only support one level of nesting).&lt;/li&gt; 
      &lt;li&gt;&#39;update&#39; - updates an existing discussion comment.&lt;/li&gt; 
      &lt;li&gt;&#39;delete&#39; - deletes a discussion comment.&lt;/li&gt; 
      &lt;li&gt;&#39;mark_answer&#39; - marks a discussion comment as the answer (Q&amp;amp;A only).&lt;/li&gt; 
      &lt;li&gt;&#39;unmark_answer&#39; - unmarks a discussion comment as the answer (Q&amp;amp;A only). (string, required)&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (required for &#39;add&#39; and &#39;reply&#39; methods) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (required for &#39;add&#39; and &#39;reply&#39; methods) (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_discussion&lt;/strong&gt; - Get discussion&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;discussionNumber&lt;/code&gt;: Discussion Number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_discussion_comments&lt;/strong&gt; - Get discussion comments&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after&lt;/code&gt;: Cursor for pagination. Use the cursor from the previous response. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;discussionNumber&lt;/code&gt;: Discussion Number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;includeReplies&lt;/code&gt;: When true, each top-level comment will include its replies nested within it (up to 100 replies per comment, which is the GitHub API maximum). Defaults to false. (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_discussion_categories&lt;/strong&gt; - List discussion categories&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name. If not provided, discussion categories will be queried at the organisation level. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_discussions&lt;/strong&gt; - List discussions&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after&lt;/code&gt;: Cursor for pagination. Use the cursor from the previous response. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;category&lt;/code&gt;: Optional filter by discussion category ID. If provided, only discussions with this category are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;direction&lt;/code&gt;: Order direction. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;orderBy&lt;/code&gt;: Order discussions by field. If provided, the &#39;direction&#39; also needs to be provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name. If not provided, discussions will be queried at the organisation level. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/logo-gist-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/logo-gist-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/logo-gist-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;logo-gist&quot; /&gt;
  &lt;/picture&gt; Gists&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;create_gist&lt;/strong&gt; - Create Gist&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;gist&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;content&lt;/code&gt;: Content for simple single-file gist creation (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;description&lt;/code&gt;: Description of the gist (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;filename&lt;/code&gt;: Filename for simple single-file gist creation (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;public&lt;/code&gt;: Whether the gist is public (boolean, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_gist&lt;/strong&gt; - Get Gist Content&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;code&gt;gist_id&lt;/code&gt;: The ID of the gist (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_gists&lt;/strong&gt; - List Gists&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;since&lt;/code&gt;: Only gists updated after this time (ISO 8601 timestamp) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;username&lt;/code&gt;: GitHub username (omit for authenticated user&#39;s gists) (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;update_gist&lt;/strong&gt; - Update Gist&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;gist&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;content&lt;/code&gt;: Content for the file (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;description&lt;/code&gt;: Updated description of the gist (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;filename&lt;/code&gt;: Filename to update or create (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;gist_id&lt;/code&gt;: ID of the gist to update (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/git-branch-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/git-branch-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/git-branch-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;git-branch&quot; /&gt;
  &lt;/picture&gt; Git&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;get_repository_tree&lt;/strong&gt; - Get repository tree 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;path_filter&lt;/code&gt;: Optional path prefix to filter the tree results (e.g., &#39;src/&#39; to only show files in the src directory) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;recursive&lt;/code&gt;: Setting this parameter to true returns the objects or subtrees referenced by the tree. Default is false (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;tree_sha&lt;/code&gt;: The SHA1 value or ref (branch or tag) name of the tree. Defaults to the repository&#39;s default branch (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/issue-opened-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/issue-opened-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/issue-opened-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;issue-opened&quot; /&gt;
  &lt;/picture&gt; Issues&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;add_issue_comment&lt;/strong&gt; - Add comment to issue or pull request&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: Comment content. Required unless reaction is provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;comment_id&lt;/code&gt;: The numeric ID of the issue or pull request comment to react to. Use this for reactions to comments; omit it to react to the issue or pull request itself. Cannot be combined with body. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: Issue or pull request number to comment on or react to. (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;reaction&lt;/code&gt;: Emoji reaction to add. Required unless body is provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_label&lt;/strong&gt; - Get a specific label from a repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Label name. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization name) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;issue_read&lt;/strong&gt; - Get issue details&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: The number of the issue (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The read operation to perform on a single issue. Options are: 
     &lt;ol&gt; 
      &lt;li&gt;get - Get issue details. Also returns best-effort hierarchy flags (&lt;code&gt;has_parent&lt;/code&gt;, &lt;code&gt;has_children&lt;/code&gt;); &lt;code&gt;parent&lt;/code&gt; and &lt;code&gt;sub_issues_summary&lt;/code&gt; are optional relationship summaries, and &lt;code&gt;closed_by_pull_requests&lt;/code&gt; summarizes the pull requests configured to close the issue as &lt;code&gt;total_count&lt;/code&gt; plus up to 5 &lt;code&gt;references&lt;/code&gt;.&lt;/li&gt; 
      &lt;li&gt;get_comments - Get issue comments.&lt;/li&gt; 
      &lt;li&gt;get_sub_issues - Get sub-issues (children) of the issue.&lt;/li&gt; 
      &lt;li&gt;get_parent - Get the parent issue, if this issue is a sub-issue of another.&lt;/li&gt; 
      &lt;li&gt;get_labels - Get labels assigned to the issue. (string, required)&lt;/li&gt; 
     &lt;/ol&gt; &lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;issue_write&lt;/strong&gt; - Create or update issue/pull request&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;assignees&lt;/code&gt;: Usernames to assign to this issue (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: Issue body content (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;duplicate_of&lt;/code&gt;: Issue number that this issue is a duplicate of. Required when state_reason is &#39;duplicate&#39;. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_fields&lt;/code&gt;: Issue field values to set or clear. Each item requires &#39;field_name&#39; and exactly one of &#39;value&#39;, &#39;field_option_name&#39;, or &#39;delete: true&#39;. (object[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: Issue number to update (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;labels&lt;/code&gt;: Labels to apply to this issue (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: Write operation to perform on a single issue. Options are: 
     &lt;ul&gt; 
      &lt;li&gt;&#39;create&#39; - creates a new issue.&lt;/li&gt; 
      &lt;li&gt;&#39;update&#39; - updates an existing issue. (string, required)&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;milestone&lt;/code&gt;: Milestone number (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: New state (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state_reason&lt;/code&gt;: Reason for the state change. Ignored unless state is changed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;title&lt;/code&gt;: Issue title (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;type&lt;/code&gt;: Type of this issue. For updates, pass null to remove the current type. Only use if issue types are enabled for this repository. Use list_issue_types to get valid type values for this repository or its owner organization. If the repository doesn&#39;t support issue types, omit this parameter. (string | null, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_issue_fields&lt;/strong&gt; - List issue fields&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes (any of)&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;admin:org&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;, &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;write:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The account owner of the repository or organization. The name is not case sensitive. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. When provided, returns fields for this specific repository (inherited from its organization). When omitted, returns org-level fields directly. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_issue_types&lt;/strong&gt; - List available issue types&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes (any of)&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;admin:org&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;, &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;write:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The account owner of the repository or organization. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. When provided, returns issue types for this specific repository. When omitted, returns org-level issue types directly. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_issues&lt;/strong&gt; - List issues&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after&lt;/code&gt;: Cursor for pagination. Use the cursor from the previous response. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;direction&lt;/code&gt;: Order direction. If provided, the &#39;orderBy&#39; also needs to be provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;field_filters&lt;/code&gt;: Filter by custom issue field values. Each entry takes a field_name and a value; the server looks up the field and coerces the value to its type (single-select option name, text, number, or YYYY-MM-DD date). (object[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each issue. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting &#39;body&#39; and &#39;field_values&#39; in particular drops the largest per-result data. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;labels&lt;/code&gt;: Filter by labels (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;orderBy&lt;/code&gt;: Order issues by field. If provided, the &#39;direction&#39; also needs to be provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;since&lt;/code&gt;: Filter by date (ISO 8601 timestamp) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter by state, by default both open and closed issues are returned when not provided (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;search_issues&lt;/strong&gt; - Search issues&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each issue result. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting &#39;body&#39;, &#39;reactions&#39;, and &#39;labels&#39; in particular drops the largest per-result data. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Optional repository owner. If provided with repo, only issues for this repository are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: The search query, as natural language. When the user gives alternative wordings, include them as plain words rather than joining them with OR. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Optional repository name. If provided with owner, only issues for this repository are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort field by number of matches of categories, defaults to best match (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;sub_issue_write&lt;/strong&gt; - Change sub-issue&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after_id&lt;/code&gt;: The ID of the sub-issue to be prioritized after (either after_id OR before_id should be specified) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;before_id&lt;/code&gt;: The ID of the sub-issue to be prioritized before (either after_id OR before_id should be specified) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: The number of the parent issue (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The action to perform on a single sub-issue Options are: 
     &lt;ul&gt; 
      &lt;li&gt;&#39;add&#39; - add a sub-issue to a parent issue in a GitHub repository.&lt;/li&gt; 
      &lt;li&gt;&#39;remove&#39; - remove a sub-issue from a parent issue in a GitHub repository.&lt;/li&gt; 
      &lt;li&gt;&#39;reprioritize&#39; - change the order of sub-issues within a parent issue in a GitHub repository. Use either &#39;after_id&#39; or &#39;before_id&#39; to specify the new position. Writes issue hierarchy. To move a sub-issue to a new parent, use &lt;code&gt;add&lt;/code&gt; with &lt;code&gt;replace_parent=true&lt;/code&gt;; there is no writable parent field. (string, required)&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;replace_parent&lt;/code&gt;: When true, replaces the sub-issue&#39;s current parent issue. Use with &#39;add&#39; method only. (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sub_issue_id&lt;/code&gt;: The ID of the sub-issue to add. ID is not the same as issue number (number, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/tag-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/tag-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/tag-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;tag&quot; /&gt;
  &lt;/picture&gt; Labels&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_label&lt;/strong&gt; - Get a specific label from a repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Label name. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization name) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;label_write&lt;/strong&gt; - Write operations on repository labels&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;color&lt;/code&gt;: Label color as 6-character hex code without &#39;#&#39; prefix (e.g., &#39;f29513&#39;). Required for &#39;create&#39;, optional for &#39;update&#39;. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;description&lt;/code&gt;: Label description text. Optional for &#39;create&#39; and &#39;update&#39;. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: Operation to perform: &#39;create&#39;, &#39;update&#39;, or &#39;delete&#39; (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Label name - required for all operations (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;new_name&lt;/code&gt;: New name for the label (used only with &#39;update&#39; method to rename) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization name) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_label&lt;/strong&gt; - List labels from a repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization name) - required for all operations (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name - required for all operations (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/bell-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/bell-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/bell-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;bell&quot; /&gt;
  &lt;/picture&gt; Notifications&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;dismiss_notification&lt;/strong&gt; - Dismiss notification&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;notifications&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: The new state of the notification (read/done) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;threadID&lt;/code&gt;: The ID of the notification thread (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_notification_details&lt;/strong&gt; - Get notification details&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;notifications&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;notificationID&lt;/code&gt;: The ID of the notification (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_notifications&lt;/strong&gt; - List notifications&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;notifications&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;before&lt;/code&gt;: Only show notifications updated before the given time (ISO 8601 format) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;filter&lt;/code&gt;: Filter notifications to, use default unless specified. Read notifications are ones that have already been acknowledged by the user. Participating notifications are those that the user is directly involved in, such as issues or pull requests they have commented on or created. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Optional repository owner. If provided with repo, only notifications for this repository are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Optional repository name. If provided with owner, only notifications for this repository are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;since&lt;/code&gt;: Only show notifications updated after the given time (ISO 8601 format) (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;manage_notification_subscription&lt;/strong&gt; - Manage notification subscription&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;notifications&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;action&lt;/code&gt;: Action to perform: ignore, watch, or delete the notification subscription. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;notificationID&lt;/code&gt;: The ID of the notification thread. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;manage_repository_notification_subscription&lt;/strong&gt; - Manage repository notification subscription&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;notifications&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;action&lt;/code&gt;: Action to perform: ignore, watch, or delete the repository notification subscription. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The account owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;mark_all_notifications_read&lt;/strong&gt; - Mark all notifications as read&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;notifications&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;lastReadAt&lt;/code&gt;: Describes the last point that notifications were checked (optional). Default: Now (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Optional repository owner. If provided with repo, only notifications for this repository are marked as read. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Optional repository name. If provided with owner, only notifications for this repository are marked as read. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/organization-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/organization-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/organization-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;organization&quot; /&gt;
  &lt;/picture&gt; Organizations&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;search_orgs&lt;/strong&gt; - Search organizations 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;read:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;admin:org&lt;/code&gt;, &lt;code&gt;read:org&lt;/code&gt;, &lt;code&gt;write:org&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Organization search query. Examples: &#39;microsoft&#39;, &#39;location:california&#39;, &#39;created:&amp;gt;=2025-01-01&#39;. Search is automatically scoped to type:org. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort field by category (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/project-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/project-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/project-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;project&quot; /&gt;
  &lt;/picture&gt; Projects&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;projects_get&lt;/strong&gt; - Get details of GitHub Projects resources&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;read:project&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;project&lt;/code&gt;, &lt;code&gt;read:project&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;field_id&lt;/code&gt;: The field&#39;s ID. Required for &#39;get_project_field&#39; method. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;field_names&lt;/code&gt;: Specific list of field names to include in the response when getting a project item (e.g. [&quot;Status&quot;, &quot;Priority&quot;]). Resolved server-side to field IDs — pass this instead of &#39;fields&#39; when you only know the human-readable names. Mutually exclusive with &#39;fields&#39; — provide one, not both. Only used for &#39;get_project_item&#39; method. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Specific list of field IDs to include in the response when getting a project item (e.g. [&quot;102589&quot;, &quot;985201&quot;, &quot;169875&quot;]). If neither &#39;fields&#39; nor &#39;field_names&#39; is provided, only the title field is included. Mutually exclusive with &#39;field_names&#39; — provide one, not both. Only used for &#39;get_project_item&#39; method. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;item_id&lt;/code&gt;: The item&#39;s ID. Required for &#39;get_project_item&#39; method. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The method to execute (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner (user or organization login). The name is not case sensitive. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner_type&lt;/code&gt;: Owner type (user or org). If not provided, will be automatically detected. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;project_number&lt;/code&gt;: The project&#39;s number. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;status_update_id&lt;/code&gt;: The node ID of the project status update. Required for &#39;get_project_status_update&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;view_id&lt;/code&gt;: The node ID of the project view. Required for &#39;get_project_view&#39; method. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;projects_list&lt;/strong&gt; - List GitHub Projects resources&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;read:project&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;project&lt;/code&gt;, &lt;code&gt;read:project&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after&lt;/code&gt;: Forward pagination cursor from previous pageInfo.nextCursor. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;before&lt;/code&gt;: Backward pagination cursor from previous pageInfo.prevCursor (rare). (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;field_names&lt;/code&gt;: Field names to include when listing project items (e.g. [&quot;Status&quot;, &quot;Priority&quot;]). Resolved server-side to field IDs — pass this instead of &#39;fields&#39; when you only know the human-readable names. Names that fail to resolve return a structured error. Mutually exclusive with &#39;fields&#39; — provide one, not both. Only used for &#39;list_project_items&#39; method. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Field IDs to include when listing project items (e.g. [&quot;102589&quot;, &quot;985201&quot;]). CRITICAL: Always provide to get field values. Without this (and without &#39;field_names&#39;), only titles returned. Mutually exclusive with &#39;field_names&#39; — provide one, not both. Only used for &#39;list_project_items&#39; method. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The action to perform (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner (user or organization login). The name is not case sensitive. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner_type&lt;/code&gt;: Owner type (user or org). If not provided, will automatically try both. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;per_page&lt;/code&gt;: Results per page (max 50) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;project_number&lt;/code&gt;: The project&#39;s number. Required for &#39;list_project_fields&#39;, &#39;list_project_items&#39;, &#39;list_project_views&#39;, and &#39;list_project_status_updates&#39; methods. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Filter/query string. For list_projects: filter by title text and state (e.g. &quot;roadmap is:open&quot;). For list_project_items: advanced filtering using GitHub&#39;s project filtering syntax. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;projects_write&lt;/strong&gt; - Manage GitHub Projects&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;project&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: The body of the status update (markdown). Used for &#39;create_project_status_update&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;field_name&lt;/code&gt;: The name of the iteration field (e.g. &#39;Sprint&#39;). Required for &#39;create_iteration_field&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;filter&lt;/code&gt;: Saved view filter; omit on update to preserve it, or pass null to clear it. (string | null, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;issue_number&lt;/code&gt;: The issue number. Required for &#39;add_project_item&#39; when item_type is &#39;issue&#39;. Also accepted by &#39;update_project_item&#39; to resolve the item by issue number (combine with item_owner and item_repo). (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;item_id&lt;/code&gt;: The project item ID. Required for &#39;delete_project_item&#39;. For &#39;update_project_item&#39;, provide either item_id, or (item_owner + item_repo + issue_number) to resolve the item by issue. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;item_owner&lt;/code&gt;: The owner (user or organization) of the repository containing the issue or pull request. Required for &#39;add_project_item&#39; method. Also accepted by &#39;update_project_item&#39; when resolving the item by issue number. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;item_repo&lt;/code&gt;: The name of the repository containing the issue or pull request. Required for &#39;add_project_item&#39; method. Also accepted by &#39;update_project_item&#39; when resolving the item by issue number. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;item_type&lt;/code&gt;: The item&#39;s type, either issue or pull_request. Required for &#39;add_project_item&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;items&lt;/code&gt;: The items to update with the top-level &#39;updated_field&#39;. Required for &#39;update_project_items&#39;; prefer it over calling &#39;update_project_item&#39; in a loop. Each entry must match exactly one reference variant: &#39;node_id&#39;, numeric &#39;item_id&#39;, or &#39;item_owner&#39; + &#39;item_repo&#39; + &#39;issue_number&#39;. Limit: 50 items per call. (object[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;iteration_duration&lt;/code&gt;: Duration in days for iterations of the field (e.g. 7 for weekly, 14 for bi-weekly). Required for &#39;create_iteration_field&#39; method. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;iterations&lt;/code&gt;: Custom iterations for &#39;create_iteration_field&#39; method. Only set this when you need iterations with varying durations, breaks between them, or specific titles. Otherwise omit it: GitHub auto-creates three iterations of &#39;iteration_duration&#39; days starting on &#39;start_date&#39;, which is the right choice for most cases. (object[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;layout&lt;/code&gt;: View layout; required when creating a view. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The method to execute (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;name&lt;/code&gt;: View name; required when creating a view. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The project owner (user or organization login). The name is not case sensitive. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner_type&lt;/code&gt;: Owner type (user or org). Required for &#39;create_project&#39; method. If not provided for other methods, will be automatically detected. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;project_number&lt;/code&gt;: The project&#39;s number. Required for all methods except &#39;create_project&#39;. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pull_request_number&lt;/code&gt;: The pull request number (use when item_type is &#39;pull_request&#39; for &#39;add_project_item&#39; method). Provide either issue_number or pull_request_number. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;start_date&lt;/code&gt;: Start date in YYYY-MM-DD format. Used for &#39;create_project_status_update&#39; and &#39;create_iteration_field&#39; methods. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;status&lt;/code&gt;: The status of the project. Used for &#39;create_project_status_update&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;target_date&lt;/code&gt;: The target date of the status update in YYYY-MM-DD format. Used for &#39;create_project_status_update&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;title&lt;/code&gt;: The project title. Required for &#39;create_project&#39; method. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;updated_field&lt;/code&gt;: The field/value to apply, using {&quot;id&quot;: 123, &quot;value&quot;: ...} or {&quot;name&quot;: &quot;Status&quot;, &quot;value&quot;: ...}; null clears the field. Required for &#39;update_project_item&#39; and &#39;update_project_items&#39;, where one top-level field/value applies to every item in a batch. For &#39;update_project_item&#39; SINGLE_SELECT fields, the name form accepts option names; the ID form expects an option ID. (object, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;view_id&lt;/code&gt;: Project view node ID for update or delete; must belong to owner/project_number. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;visible_field_names&lt;/code&gt;: Ordered project field names to show on create or replace on update; omit on update to preserve, or pass [] to reset. Mutually exclusive with visible_fields. Roadmap accepts only []. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;visible_fields&lt;/code&gt;: Ordered project field database IDs to show on create or replace on update; omit on update to preserve, or pass [] to reset. Mutually exclusive with visible_field_names. Roadmap accepts only []. (string[], optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/git-pull-request-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/git-pull-request-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/git-pull-request-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;git-pull-request&quot; /&gt;
  &lt;/picture&gt; Pull Requests&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;add_comment_to_pending_review&lt;/strong&gt; - Add review comment to the requester&#39;s latest pending pull request review&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: The text of the review comment (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;line&lt;/code&gt;: The line of the blob in the pull request diff that the comment applies to. For multi-line comments, the last line of the range (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;path&lt;/code&gt;: The relative path to the file that necessitates a comment (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;side&lt;/code&gt;: The side of the diff to comment on. LEFT indicates the previous state, RIGHT indicates the new state (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;startLine&lt;/code&gt;: For multi-line comments, the first line of the range that the comment applies to (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;startSide&lt;/code&gt;: For multi-line comments, the starting side of the diff that the comment applies to. LEFT indicates the previous state, RIGHT indicates the new state (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;subjectType&lt;/code&gt;: The level at which the comment is targeted (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;add_reply_to_pull_request_comment&lt;/strong&gt; - Add reply to pull request comment&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: The text of the reply. Required unless reaction is provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;commentId&lt;/code&gt;: The numeric ID of the pull request review comment to reply or react to. Use the number from a #discussion_r... anchor, not the GraphQL thread node ID (PRRT_...). (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number. Required when body is provided. (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;reaction&lt;/code&gt;: Emoji reaction to add. Required unless body is provided. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;create_pull_request&lt;/strong&gt; - Open new pull request&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;base&lt;/code&gt;: Branch to merge into (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: PR description (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;draft&lt;/code&gt;: Create as draft PR (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;head&lt;/code&gt;: Branch containing changes (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;maintainer_can_modify&lt;/code&gt;: Allow maintainer edits (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;reviewers&lt;/code&gt;: GitHub usernames or ORG/team-slug team reviewers to request reviews from (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;title&lt;/code&gt;: PR title (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_pull_requests&lt;/strong&gt; - List pull requests&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;base&lt;/code&gt;: Filter by base branch (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;direction&lt;/code&gt;: Sort direction (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each pull request. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting &#39;body&#39; in particular drops the largest per-result data. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;head&lt;/code&gt;: Filter by head user/org and branch (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort by (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter by state (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;merge_pull_request&lt;/strong&gt; - Merge pull request&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;commit_message&lt;/code&gt;: Extra detail for merge commit (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;commit_title&lt;/code&gt;: Title for merge commit (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;merge_method&lt;/code&gt;: Merge method (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;pull_request_read&lt;/strong&gt; - Get details for a single pull request&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;after&lt;/code&gt;: Cursor for pagination, used only by the get_review_comments method. Pass the endCursor from the previous page&#39;s PageInfo to fetch the next page. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: Action to specify what pull request data needs to be retrieved from GitHub. Possible options: 
     &lt;ol&gt; 
      &lt;li&gt;get - Get details of a specific pull request.&lt;/li&gt; 
      &lt;li&gt;get_diff - Get the diff of a pull request.&lt;/li&gt; 
      &lt;li&gt;get_status - Get combined commit status of a head commit in a pull request.&lt;/li&gt; 
      &lt;li&gt;get_files - Get the list of files changed in a pull request. Use with pagination parameters to control the number of results returned.&lt;/li&gt; 
      &lt;li&gt;get_commits - Get the list of commits on a pull request. Use with pagination parameters to control the number of results returned.&lt;/li&gt; 
      &lt;li&gt;get_review_comments - Get review threads on a pull request. Each thread contains logically grouped review comments made on the same code location during pull request reviews. Returns threads with metadata (isResolved, isOutdated, isCollapsed) and their associated comments. Use cursor-based pagination (perPage, after) to control results.&lt;/li&gt; 
      &lt;li&gt;get_reviews - Get the reviews on a pull request. When asked for review comments, use get_review_comments method. Use with pagination parameters to control the number of results returned.&lt;/li&gt; 
      &lt;li&gt;get_comments - Get comments on a pull request. Use this if user doesn&#39;t specifically want review comments. Use with pagination parameters to control the number of results returned.&lt;/li&gt; 
      &lt;li&gt;get_check_runs - Get check runs for the head commit of a pull request. Check runs are the individual CI/CD jobs and checks that run on the PR. (string, required)&lt;/li&gt; 
     &lt;/ol&gt; &lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;pull_request_review_write&lt;/strong&gt; - Write operations (create, submit, delete) on pull request reviews&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: Review comment text (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;commitID&lt;/code&gt;: SHA of commit to review (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;event&lt;/code&gt;: Review action to perform. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;method&lt;/code&gt;: The write operation to perform on pull request review. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;threadId&lt;/code&gt;: The node ID of the review thread (e.g., PRRT_kwDOxxx). Required for resolve_thread and unresolve_thread methods. Get thread IDs from pull_request_read with method get_review_comments. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;search_pull_requests&lt;/strong&gt; - Search pull requests&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each pull request result. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting &#39;body&#39;, &#39;reactions&#39;, and &#39;labels&#39; in particular drops the largest per-result data. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Optional repository owner. If provided with repo, only pull requests for this repository are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Search query using GitHub pull request search syntax (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Optional repository name. If provided with owner, only pull requests for this repository are listed. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort field by number of matches of categories, defaults to best match (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;update_pull_request&lt;/strong&gt; - Edit pull request&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;base&lt;/code&gt;: New base branch name (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;body&lt;/code&gt;: New description (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;draft&lt;/code&gt;: Mark pull request as draft (true) or ready for review (false) (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;maintainer_can_modify&lt;/code&gt;: Allow maintainer edits (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number to update (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;reviewers&lt;/code&gt;: GitHub usernames or ORG/team-slug team reviewers to request reviews from (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: New state (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;title&lt;/code&gt;: New title (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;update_pull_request_branch&lt;/strong&gt; - Update pull request branch&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;expectedHeadSha&lt;/code&gt;: The expected SHA of the pull request&#39;s HEAD ref (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;pullNumber&lt;/code&gt;: Pull request number (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/repo-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/repo-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/repo-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;repo&quot; /&gt;
  &lt;/picture&gt; Repositories&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;create_branch&lt;/strong&gt; - Create branch&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;branch&lt;/code&gt;: Name for new branch (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;from_branch&lt;/code&gt;: Source branch (defaults to repo default) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;create_or_update_file&lt;/strong&gt; - Create or update file&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;branch&lt;/code&gt;: Branch to create/update the file in (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;content&lt;/code&gt;: Content of the file, exactly as it should appear once written. Do not base64-encode it; this server does that before calling the REST API. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Commit message (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;path&lt;/code&gt;: Path where to create/update the file (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sha&lt;/code&gt;: The blob SHA of the file being replaced. Required if the file already exists. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;create_repository&lt;/strong&gt; - Create repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;autoInit&lt;/code&gt;: Initialize with README (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;description&lt;/code&gt;: Repository description (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;organization&lt;/code&gt;: Organization to create the repository in (omit to create in your personal account) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;private&lt;/code&gt;: Whether the repository should be private. Defaults to true (private) when omitted. (boolean, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;delete_file&lt;/strong&gt; - Delete file&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;branch&lt;/code&gt;: Branch to delete the file from (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Commit message (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;path&lt;/code&gt;: Path to the file to delete (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;fork_repository&lt;/strong&gt; - Fork repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;organization&lt;/code&gt;: Organization to fork to (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_commit&lt;/strong&gt; - Get commit details&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;detail&lt;/code&gt;: Level of detail to include for changed files. &quot;none&quot; omits stats and files entirely. &quot;stats&quot; (default) includes per-file metadata: filename, status, and lines-of-code counts (additions, deletions, changes), with no patch content. &quot;full_patch&quot; additionally includes the unified diff content for each file and can be very large. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sha&lt;/code&gt;: Commit SHA, branch name, or tag name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_file_contents&lt;/strong&gt; - Get file or directory contents&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each entry when the path is a directory. If omitted, all fields are returned. Ignored when the path is a single file. Use this to reduce response size when listing directories and you only need specific fields, e.g. just &#39;name&#39; and &#39;type&#39;. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (username or organization) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;path&lt;/code&gt;: Path to file/directory (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;ref&lt;/code&gt;: Accepts optional git refs such as &lt;code&gt;refs/tags/{tag}&lt;/code&gt;, &lt;code&gt;refs/heads/{branch}&lt;/code&gt; or &lt;code&gt;refs/pull/{pr_number}/head&lt;/code&gt; (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sha&lt;/code&gt;: Accepts optional commit SHA. If specified, it will be used instead of ref (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_latest_release&lt;/strong&gt; - Get latest release&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_release_by_tag&lt;/strong&gt; - Get a release by tag name&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;tag&lt;/code&gt;: Tag name (e.g., &#39;v1.0.0&#39;) (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_tag&lt;/strong&gt; - Get tag details&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;tag&lt;/code&gt;: Tag name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_branches&lt;/strong&gt; - List branches&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_commits&lt;/strong&gt; - List commits&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;author&lt;/code&gt;: Author username or email address to filter commits by (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each commit. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields, e.g. just &#39;sha&#39; and &#39;html_url&#39;. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;path&lt;/code&gt;: Only commits containing this file path will be returned (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sha&lt;/code&gt;: Commit SHA, branch or tag name to list commits of. If not provided, uses the default branch of the repository. If a commit SHA is provided, will list commits up to that SHA. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;since&lt;/code&gt;: Only commits after this date will be returned (ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DD) (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;until&lt;/code&gt;: Only commits before this date will be returned (ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DD) (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_releases&lt;/strong&gt; - List releases&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each release. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting &#39;body&#39; in particular drops the largest per-release data. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_repository_collaborators&lt;/strong&gt; - List repository collaborators&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;affiliation&lt;/code&gt;: Filter by affiliation. Can be one of: &#39;outside&#39; (outside collaborators), &#39;direct&#39; (all with permissions regardless of org membership), &#39;all&#39; (all collaborators). Default: &#39;all&#39; (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (default 1, min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (default 30, min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_tags&lt;/strong&gt; - List tags&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;push_files&lt;/strong&gt; - Push files to repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;branch&lt;/code&gt;: Branch to push to (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;files&lt;/code&gt;: Array of file objects to push, each object with path (string) and content (string) (object[], required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Commit message (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;search_code&lt;/strong&gt; - Search code&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;fields&lt;/code&gt;: Subset of fields to return for each code search result. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting &#39;repository&#39; and &#39;text_matches&#39; in particular drops the largest per-result data. (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order for results (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Search query (GitHub code search REST). Implicit AND between terms; supports &lt;code&gt;OR&lt;/code&gt;, &lt;code&gt;NOT&lt;/code&gt;, and &lt;code&gt;&quot;quoted phrase&quot;&lt;/code&gt; for exact match. Qualifiers: &lt;code&gt;repo:owner/repo&lt;/code&gt;, &lt;code&gt;org:&lt;/code&gt;, &lt;code&gt;user:&lt;/code&gt;, &lt;code&gt;language:&lt;/code&gt;, &lt;code&gt;path:dir&lt;/code&gt; (prefix match), &lt;code&gt;filename:exact.ext&lt;/code&gt;, &lt;code&gt;extension:&lt;/code&gt;, &lt;code&gt;in:file&lt;/code&gt;, &lt;code&gt;in:path&lt;/code&gt;, &lt;code&gt;size:&lt;/code&gt;, &lt;code&gt;is:archived&lt;/code&gt;, &lt;code&gt;is:fork&lt;/code&gt;. Max 256 chars. Examples: &lt;code&gt;WithContext language:go org:github&lt;/code&gt;; &lt;code&gt;&quot;package main&quot; repo:o/r&lt;/code&gt;; &lt;code&gt;func extension:go path:cmd repo:o/r&lt;/code&gt;; &lt;code&gt;NOT TODO language:go repo:o/r&lt;/code&gt;. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort field (&#39;indexed&#39; only) (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;search_commits&lt;/strong&gt; - Search commits&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Commit search query (GitHub commit search REST). Searches commit messages on the default branch only. Scope the search with &lt;code&gt;repo:owner/repo&lt;/code&gt;, &lt;code&gt;org:&lt;/code&gt;, or &lt;code&gt;user:&lt;/code&gt; (queries without a scope qualifier match across all of GitHub and are usually not what you want). Other qualifiers: &lt;code&gt;author:&lt;/code&gt;, &lt;code&gt;committer:&lt;/code&gt;, &lt;code&gt;author-name:&lt;/code&gt;, &lt;code&gt;committer-name:&lt;/code&gt;, &lt;code&gt;author-email:&lt;/code&gt;, &lt;code&gt;committer-email:&lt;/code&gt;, &lt;code&gt;author-date:&lt;/code&gt;, &lt;code&gt;committer-date:&lt;/code&gt; (supports &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;, and &lt;code&gt;YYYY-MM-DD..YYYY-MM-DD&lt;/code&gt; ranges), &lt;code&gt;merge:true|false&lt;/code&gt;, &lt;code&gt;hash:&lt;/code&gt;, &lt;code&gt;tree:&lt;/code&gt;, &lt;code&gt;parent:&lt;/code&gt;, &lt;code&gt;is:public&lt;/code&gt;. Examples: &lt;code&gt;repo:owner/repo fix panic&lt;/code&gt;; &lt;code&gt;org:github author:defunkt committer-date:&amp;gt;=2024-01-01&lt;/code&gt;; &lt;code&gt;&quot;refactor cache&quot; repo:o/r&lt;/code&gt;; &lt;code&gt;hash:abc1234 repo:o/r&lt;/code&gt;. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort by author or committer date (defaults to best match) (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;search_repositories&lt;/strong&gt; - Search repositories&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;minimal_output&lt;/code&gt;: Return minimal repository information (default: true). When false, returns full GitHub API repository objects. (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Repository search query. Examples: &#39;machine learning in:name stars:&amp;gt;1000 language:python&#39;, &#39;topic:react&#39;, &#39;user:facebook&#39;. Supports advanced search syntax for precise filtering. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort repositories by field, defaults to best match (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/shield-lock-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/shield-lock-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/shield-lock-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;shield-lock&quot; /&gt;
  &lt;/picture&gt; Secret Protection&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_secret_scanning_alert&lt;/strong&gt; - Get secret scanning alert&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;alertNumber&lt;/code&gt;: The number of the alert. (number, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_secret_scanning_alerts&lt;/strong&gt; - List secret scanning alerts&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;resolution&lt;/code&gt;: Filter by resolution (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;secret_type&lt;/code&gt;: A comma-separated list of secret types to return. All default secret patterns are returned. To return generic patterns, pass the token name(s) in the parameter. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter by state (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/shield-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/shield-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/shield-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;shield&quot; /&gt;
  &lt;/picture&gt; Security Advisories&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_global_security_advisory&lt;/strong&gt; - Get a global security advisory&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;ghsaId&lt;/code&gt;: GitHub Security Advisory ID (format: GHSA-xxxx-xxxx-xxxx). (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_global_security_advisories&lt;/strong&gt; - List global security advisories&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;affects&lt;/code&gt;: Filter advisories by affected package or version (e.g. &quot;package1,package2@1.0.0&quot;). (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;cveId&lt;/code&gt;: Filter by CVE ID. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;cwes&lt;/code&gt;: Filter by Common Weakness Enumeration IDs (e.g. [&quot;79&quot;, &quot;284&quot;, &quot;22&quot;]). (string[], optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;ecosystem&lt;/code&gt;: Filter by package ecosystem. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;ghsaId&lt;/code&gt;: Filter by GitHub Security Advisory ID (format: GHSA-xxxx-xxxx-xxxx). (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;isWithdrawn&lt;/code&gt;: Whether to only return withdrawn advisories. (boolean, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;modified&lt;/code&gt;: Filter by publish or update date or date range (ISO 8601 date or range). (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;published&lt;/code&gt;: Filter by publish date or date range (ISO 8601 date or range). (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;severity&lt;/code&gt;: Filter by severity. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;type&lt;/code&gt;: Advisory type. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;updated&lt;/code&gt;: Filter by update date or date range (ISO 8601 date or range). (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_org_repository_security_advisories&lt;/strong&gt; - List org repository security advisories&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;direction&lt;/code&gt;: Sort direction. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;org&lt;/code&gt;: The organization login. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort field. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter by advisory state. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_repository_security_advisories&lt;/strong&gt; - List repository security advisories&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Accepted OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;security_events&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;direction&lt;/code&gt;: Sort direction. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: The name of the repository. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort field. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;state&lt;/code&gt;: Filter by advisory state. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/star-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/star-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/star-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;star&quot; /&gt;
  &lt;/picture&gt; Stargazers&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_starred_repositories&lt;/strong&gt; - List starred repositories&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;direction&lt;/code&gt;: The direction to sort the results by. (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: How to sort the results. Can be either &#39;created&#39; (when the repository was starred) or &#39;updated&#39; (when the repository was last pushed to). (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;username&lt;/code&gt;: Username to list starred repositories for. Defaults to the authenticated user. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;star_repository&lt;/strong&gt; - Star repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;unstar_repository&lt;/strong&gt; - Unstar repository&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;pkg/octicons/icons/people-dark.png&quot; /&gt;
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;pkg/octicons/icons/people-light.png&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/pkg/octicons/icons/people-light.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;people&quot; /&gt;
  &lt;/picture&gt; Users&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;search_users&lt;/strong&gt; - Search users 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Required OAuth Scopes&lt;/strong&gt;: &lt;code&gt;repo&lt;/code&gt;&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;order&lt;/code&gt;: Sort order (string, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;page&lt;/code&gt;: Page number for pagination (min 1) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;perPage&lt;/code&gt;: Results per page for pagination (min 1, max 100) (number, optional)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: User search query. Examples: &#39;john smith&#39;, &#39;location:seattle&#39;, &#39;followers:&amp;gt;100&#39;. Search is automatically scoped to type:user. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;sort&lt;/code&gt;: Sort users by number of followers or repositories, or when the person joined GitHub. (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;!-- END AUTOMATED TOOLS --&gt; 
&lt;h3&gt;Additional Tools in Remote GitHub MCP Server&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;Copilot&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;create_pull_request_with_copilot&lt;/strong&gt; - Perform task with GitHub Copilot coding agent 
   &lt;ul&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: Repository owner. You can guess the owner, but confirm it with the user before proceeding. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;repo&lt;/code&gt;: Repository name. You can guess the repository name, but confirm it with the user before proceeding. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;problem_statement&lt;/code&gt;: Detailed description of the task to be performed (e.g., &#39;Implement a feature that does X&#39;, &#39;Fix bug Y&#39;, etc.) (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;title&lt;/code&gt;: Title for the pull request that will be created (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;base_ref&lt;/code&gt;: Git reference (e.g., branch) that the agent will start its work from. If not specified, defaults to the repository&#39;s default branch (string, optional)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Copilot Spaces&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;Authentication note&lt;/strong&gt;&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;Fine-grained PATs are not hidden by classic PAT scope filtering, so these tools may still appear even when the token cannot use them.&lt;/li&gt; 
    &lt;li&gt;For org-owned spaces, fine-grained PATs must be installed on the owning organization and include &lt;code&gt;organization_copilot_spaces: read&lt;/code&gt;.&lt;/li&gt; 
    &lt;li&gt;If an org-owned space contains repository-backed resources, the token must also have access to every referenced repository or the space may be treated as not found.&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;get_copilot_space&lt;/strong&gt; - Get Copilot Space&lt;/p&gt; 
   &lt;ul&gt; 
    &lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: The owner of the space. (string, required)&lt;/li&gt; 
    &lt;li&gt;&lt;code&gt;name&lt;/code&gt;: The name of the space. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt; &lt;p&gt;&lt;strong&gt;list_copilot_spaces&lt;/strong&gt; - List Copilot Spaces&lt;/p&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;GitHub Support Docs Search&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;github_support_docs_search&lt;/strong&gt; - Retrieve documentation relevant to answer GitHub product and support questions. Support topics include: GitHub Actions Workflows, Authentication, GitHub Support Inquiries, Pull Request Practices, Repository Maintenance, GitHub Pages, GitHub Packages, GitHub Discussions, Copilot Spaces 
   &lt;ul&gt; 
    &lt;li&gt;&lt;code&gt;query&lt;/code&gt;: Input from the user about the question they need answered. This is the latest raw unedited user message. You should ALWAYS leave the user message as it is, you should never modify it. (string, required)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Read-Only Mode&lt;/h2&gt; 
&lt;p&gt;To run the server in read-only mode, you can use the &lt;code&gt;--read-only&lt;/code&gt; flag. This will only offer read-only tools, preventing any modifications to repositories, issues, pull requests, etc.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./github-mcp-server --read-only
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;When using Docker, you can pass the read-only mode as an environment variable:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=&amp;lt;your-token&amp;gt; \
  -e GITHUB_READ_ONLY=1 \
  ghcr.io/github/github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Lockdown Mode&lt;/h2&gt; 
&lt;p&gt;Lockdown mode limits the content that the server will surface from public repositories. When enabled, the server checks whether the author of each item has push access to the repository. Private repositories are unaffected, and collaborators keep full access to their own content.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./github-mcp-server --lockdown-mode
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;When running with Docker, set the corresponding environment variable:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=&amp;lt;your-token&amp;gt; \
  -e GITHUB_LOCKDOWN_MODE=1 \
  ghcr.io/github/github-mcp-server
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The behavior of lockdown mode depends on the tool invoked.&lt;/p&gt; 
&lt;p&gt;Following tools will return an error when the author lacks the push access:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;issue_read:get&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;pull_request_read:get&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Following tools will filter out content from users lacking the push access:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;issue_read:get_comments&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;issue_read:get_sub_issues&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;pull_request_read:get_comments&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;pull_request_read:get_review_comments&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;pull_request_read:get_reviews&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;i18n / Overriding Descriptions&lt;/h2&gt; 
&lt;p&gt;The descriptions of the tools can be overridden by creating a &lt;code&gt;github-mcp-server-config.json&lt;/code&gt; file in the same directory as the binary.&lt;/p&gt; 
&lt;p&gt;The file should contain a JSON object with the tool names as keys and the new descriptions as values. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;TOOL_ADD_ISSUE_COMMENT_DESCRIPTION&quot;: &quot;an alternative description&quot;,
  &quot;TOOL_CREATE_BRANCH_DESCRIPTION&quot;: &quot;Create a new branch in a GitHub repository&quot;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can create an export of the current translations by running the binary with the &lt;code&gt;--export-translations&lt;/code&gt; flag.&lt;/p&gt; 
&lt;p&gt;This flag will preserve any translations/overrides you have made, while adding any new translations that have been added to the binary since the last time you exported.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;./github-mcp-server --export-translations
cat github-mcp-server-config.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can also use ENV vars to override the descriptions. The environment variable names are the same as the keys in the JSON file, prefixed with &lt;code&gt;GITHUB_MCP_&lt;/code&gt; and all uppercase.&lt;/p&gt; 
&lt;p&gt;For example, to override the &lt;code&gt;TOOL_ADD_ISSUE_COMMENT_DESCRIPTION&lt;/code&gt; tool, you can set the following environment variable:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION=&quot;an alternative description&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Overriding Server Name and Title&lt;/h3&gt; 
&lt;p&gt;The same override mechanism can be used to customize the MCP server&#39;s &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;title&lt;/code&gt; fields in the initialization response. This is useful when running multiple GitHub MCP Server instances (e.g., one for &lt;a href=&quot;http://github.com&quot;&gt;github.com&lt;/a&gt; and one for GitHub Enterprise Server) so that agents can distinguish between them.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Key&lt;/th&gt; 
   &lt;th&gt;Environment Variable&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;SERVER_NAME&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GITHUB_MCP_SERVER_NAME&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;github-mcp-server&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;SERVER_TITLE&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GITHUB_MCP_SERVER_TITLE&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GitHub MCP Server&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For example, to configure a server instance for GitHub Enterprise Server:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;SERVER_NAME&quot;: &quot;ghes-mcp-server&quot;,
  &quot;SERVER_TITLE&quot;: &quot;GHES MCP Server&quot;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or using environment variables:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;export GITHUB_MCP_SERVER_NAME=&quot;ghes-mcp-server&quot;
export GITHUB_MCP_SERVER_TITLE=&quot;GHES MCP Server&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Library Usage&lt;/h2&gt; 
&lt;p&gt;The exported Go API of this module should currently be considered unstable, and subject to breaking changes. In the future, we may offer stability; please file an issue if there is a use case where this would be valuable.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome. Before opening a pull request, please read the &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/CONTRIBUTING.md&quot;&gt;contributing guide&lt;/a&gt; for setup, testing, linting, and documentation generation instructions.&lt;/p&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;For help using the GitHub MCP Server, see the &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/SUPPORT.md&quot;&gt;support guide&lt;/a&gt;. If you have found a bug or want to request a feature, please search existing issues before opening a new one.&lt;/p&gt; 
&lt;h2&gt;Security&lt;/h2&gt; 
&lt;p&gt;Please do not report security vulnerabilities through public issues. Follow the instructions in the &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/SECURITY.md&quot;&gt;security policy&lt;/a&gt; to report vulnerabilities responsibly.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the terms of the MIT open source license. Please refer to &lt;a href=&quot;https://raw.githubusercontent.com/github/github-mcp-server/main/LICENSE&quot;&gt;MIT&lt;/a&gt; for the full terms.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>infiniflow/ragflow</title>
      <link>https://github.com/infiniflow/ragflow</link>
      <description>&lt;p&gt;RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://cloud.ragflow.io/&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/web/src/assets/logo-with-text.svg?sanitize=true&quot; width=&quot;520&quot; alt=&quot;ragflow logo&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README.md&quot;&gt;&lt;img alt=&quot;README in English&quot; src=&quot;https://img.shields.io/badge/English-DBEDFA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_zh.md&quot;&gt;&lt;img alt=&quot;简体中文版自述文件&quot; src=&quot;https://img.shields.io/badge/%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_tzh.md&quot;&gt;&lt;img alt=&quot;繁體版中文自述文件&quot; src=&quot;https://img.shields.io/badge/%E7%B9%81%E9%AB%94%E4%B8%AD%E6%96%87-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_ja.md&quot;&gt;&lt;img alt=&quot;日本語のREADME&quot; src=&quot;https://img.shields.io/badge/%E6%97%A5%E6%9C%AC%E8%AA%9E-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_ko.md&quot;&gt;&lt;img alt=&quot;한국어&quot; src=&quot;https://img.shields.io/badge/%ED%95%9C%EA%B5%AD%EC%96%B4-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_fr.md&quot;&gt;&lt;img alt=&quot;README en Français&quot; src=&quot;https://img.shields.io/badge/Fran%C3%A7ais-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_id.md&quot;&gt;&lt;img alt=&quot;Bahasa Indonesia&quot; src=&quot;https://img.shields.io/badge/Bahasa%20Indonesia-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_pt_br.md&quot;&gt;&lt;img alt=&quot;Português(Brasil)&quot; src=&quot;https://img.shields.io/badge/Portugu%C3%AAs(Brasil)-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_ar.md&quot;&gt;&lt;img alt=&quot;README in Arabic&quot; src=&quot;https://img.shields.io/badge/Arabic-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_tr.md&quot;&gt;&lt;img alt=&quot;Türkçe README&quot; src=&quot;https://img.shields.io/badge/T%C3%BCrk%C3%A7e-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/README_ru.md&quot;&gt;&lt;img alt=&quot;Русская версия README&quot; src=&quot;https://img.shields.io/badge/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-DFE0E5&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://x.com/intent/follow?screen_name=infiniflowai&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/twitter/follow/infiniflow?logo=X&amp;amp;color=%20%23f5f5f5&quot; alt=&quot;follow on X(Twitter)&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://cloud.ragflow.io&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;Static Badge&quot; src=&quot;https://img.shields.io/badge/Get-Started-4e6b99&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/infiniflow/ragflow&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/infiniflow/ragflow-stats/main/badges/docker-pulls.json&amp;amp;style=flat-square&amp;amp;logo=docker&amp;amp;logoColor=white&quot; alt=&quot;docker pull infiniflow/ragflow:v0.26.4&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/infiniflow/ragflow/releases/latest&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/infiniflow/ragflow?color=blue&amp;amp;label=Latest%20Release&quot; alt=&quot;Latest Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/infiniflow/ragflow/raw/main/LICENSE&quot;&gt; &lt;img height=&quot;21&quot; src=&quot;https://img.shields.io/badge/License-Apache--2.0-ffffff?labelColor=d4eaf7&amp;amp;color=2e6cc4&quot; alt=&quot;license&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://deepwiki.com/infiniflow/ragflow&quot;&gt; &lt;img alt=&quot;Ask DeepWiki&quot; src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;h4 align=&quot;center&quot;&gt; &lt;a href=&quot;https://cloud.ragflow.io&quot;&gt;Cloud&lt;/a&gt; | &lt;a href=&quot;https://ragflow.io/docs/dev/&quot;&gt;Documentation&lt;/a&gt; | &lt;a href=&quot;https://github.com/infiniflow/ragflow/issues/12241&quot;&gt;Roadmap&lt;/a&gt; | &lt;a href=&quot;https://discord.gg/NjYzJD3GM3&quot;&gt;Discord&lt;/a&gt; &lt;/h4&gt; 
&lt;div align=&quot;center&quot; style=&quot;margin-top:20px;margin-bottom:20px;&quot;&gt; 
 &lt;img alt=&quot;RAGFlow in the GitHub Octoverse&quot; src=&quot;https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/ragflow-octoverse.png&quot; width=&quot;1200&quot; /&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/9064&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/9064&quot; alt=&quot;infiniflow%2Fragflow | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;details open&gt; 
 &lt;summary&gt;&lt;b&gt;📕 Table of Contents&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;💡 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-what-is-ragflow&quot;&gt;What is RAGFlow?&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🎮 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-get-started&quot;&gt;Get Started&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🔥 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-latest-updates&quot;&gt;Latest Updates&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🌟 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-key-features&quot;&gt;Key Features&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🔎 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-system-architecture&quot;&gt;System Architecture&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🎬 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-self-hosting&quot;&gt;Self-Hosting&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🔧 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-configurations&quot;&gt;Configurations&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🔧 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-build-a-docker-image&quot;&gt;Build a Docker Image&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🔨 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-launch-service-from-source-for-development&quot;&gt;Launch Service from Source for Development&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;📚 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-documentation&quot;&gt;Documentation&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;📜 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-roadmap&quot;&gt;Roadmap&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🏄 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;🙌 &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/#-contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;💡 What is RAGFlow?&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://ragflow.io/&quot;&gt;RAGFlow&lt;/a&gt; is a leading open-source Retrieval-Augmented Generation (&lt;a href=&quot;https://ragflow.io/basics/what-is-rag&quot;&gt;RAG&lt;/a&gt;) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs. It offers a streamlined RAG workflow adaptable to enterprises of any scale. Powered by a converged &lt;a href=&quot;https://ragflow.io/basics/what-is-agent-context-engine&quot;&gt;context engine&lt;/a&gt; and pre-built agent templates, RAGFlow enables developers to transform complex data into high-fidelity, production-ready AI systems with exceptional efficiency and precision.&lt;/p&gt; 
&lt;h2&gt;🎮 Get Started&lt;/h2&gt; 
&lt;p&gt;Try our cloud service at &lt;a href=&quot;https://cloud.ragflow.io&quot;&gt;https://cloud.ragflow.io&lt;/a&gt;.&lt;/p&gt; 
&lt;div align=&quot;center&quot; style=&quot;margin-top:20px;margin-bottom:20px;&quot;&gt; 
 &lt;img alt=&quot;Chunking demonstration&quot; src=&quot;https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/chunking.gif&quot; width=&quot;1200&quot; /&gt; 
 &lt;img alt=&quot;Agentic workflow demonstration&quot; src=&quot;https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/agentic-dark.gif&quot; width=&quot;1200&quot; /&gt; 
&lt;/div&gt; 
&lt;h2&gt;🔥 Latest Updates&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;2026-06-15 Support multiple chat channels such as Feishu, Discord, Telegram, Line, etc.&lt;/li&gt; 
 &lt;li&gt;2026-04-24 Supports DeepSeek v4.&lt;/li&gt; 
 &lt;li&gt;2026-03-24 &lt;a href=&quot;https://clawhub.ai/yingfeng/ragflow-skill&quot;&gt;RAGFlow Skill on OpenClaw&lt;/a&gt; — Provides an official skill for accessing RAGFlow datasets via OpenClaw.&lt;/li&gt; 
 &lt;li&gt;2025-12-26 Supports &#39;Memory&#39; for AI agent.&lt;/li&gt; 
 &lt;li&gt;2025-11-19 Supports Gemini 3 Pro.&lt;/li&gt; 
 &lt;li&gt;2025-11-12 Supports data synchronization from Confluence, S3, Notion, Discord, Google Drive.&lt;/li&gt; 
 &lt;li&gt;2025-10-23 Supports MinerU &amp;amp; Docling as document parsing methods.&lt;/li&gt; 
 &lt;li&gt;2025-10-15 Supports orchestrable ingestion pipeline.&lt;/li&gt; 
 &lt;li&gt;2025-08-08 Supports OpenAI&#39;s latest GPT-5 series models.&lt;/li&gt; 
 &lt;li&gt;2025-08-01 Supports agentic workflow and MCP.&lt;/li&gt; 
 &lt;li&gt;2025-05-23 Adds a Python/JavaScript code executor component to Agent.&lt;/li&gt; 
 &lt;li&gt;2025-03-19 Supports using a multi-modal model to make sense of images within PDF or DOCX files.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🎉 Stay Tuned&lt;/h2&gt; 
&lt;p&gt;⭐️ Star our repository to stay up-to-date with exciting new features and improvements! Get instant notifications for new releases! 🌟&lt;/p&gt; 
&lt;div align=&quot;center&quot; style=&quot;margin-top:20px;margin-bottom:20px;&quot;&gt; 
 &lt;img alt=&quot;RAGFlow feature updates&quot; src=&quot;https://github.com/user-attachments/assets/18c9707e-b8aa-4caf-a154-037089c105ba&quot; width=&quot;1200&quot; /&gt; 
&lt;/div&gt; 
&lt;h2&gt;🌟 Key Features&lt;/h2&gt; 
&lt;h3&gt;🍭 &lt;strong&gt;&quot;Quality in, quality out&quot;&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/deepdoc/README.md&quot;&gt;Deep document understanding&lt;/a&gt;-based knowledge extraction from unstructured data with complicated formats.&lt;/li&gt; 
 &lt;li&gt;Finds &quot;needle in a data haystack&quot; of literally unlimited tokens.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🍱 &lt;strong&gt;Template-based chunking&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Intelligent and explainable.&lt;/li&gt; 
 &lt;li&gt;Plenty of template options to choose from.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🌱 &lt;strong&gt;Grounded citations with reduced hallucinations&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Visualization of text chunking to allow human intervention.&lt;/li&gt; 
 &lt;li&gt;Quick view of the key references and traceable citations to support grounded answers.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🍔 &lt;strong&gt;Compatibility with heterogeneous data sources&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Supports Word, Slides, Excel, TXT, images, scanned copies, structured data, web pages, and more.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🛀 &lt;strong&gt;Automated and effortless RAG workflow&lt;/strong&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Streamlined RAG orchestration catered to both personal and large businesses.&lt;/li&gt; 
 &lt;li&gt;Configurable LLMs as well as embedding models.&lt;/li&gt; 
 &lt;li&gt;Multiple recall paired with fused re-ranking.&lt;/li&gt; 
 &lt;li&gt;Intuitive APIs for seamless integration with business.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🔎 System Architecture&lt;/h2&gt; 
&lt;div align=&quot;center&quot; style=&quot;margin-top:20px;margin-bottom:20px;&quot;&gt; 
 &lt;img alt=&quot;RAGFlow system architecture&quot; src=&quot;https://github.com/user-attachments/assets/31b0dd6f-ca4f-445a-9457-70cb44a381b2&quot; width=&quot;1000&quot; /&gt; 
&lt;/div&gt; 
&lt;h2&gt;🎬 Self-Hosting&lt;/h2&gt; 
&lt;h3&gt;📝 Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;CPU &amp;gt;= 4 cores&lt;/li&gt; 
 &lt;li&gt;RAM &amp;gt;= 16 GB&lt;/li&gt; 
 &lt;li&gt;Disk &amp;gt;= 50 GB&lt;/li&gt; 
 &lt;li&gt;Docker &amp;gt;= 24.0.0 &amp;amp; Docker Compose &amp;gt;= v2.26.1&lt;/li&gt; 
 &lt;li&gt;Python &amp;gt;= 3.13&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gvisor.dev/docs/user_guide/install/&quot;&gt;gVisor&lt;/a&gt;: Required only if you intend to use the code executor (sandbox) feature of RAGFlow.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;If you have not installed Docker on your local machine (Windows, Mac, or Linux), see &lt;a href=&quot;https://docs.docker.com/engine/install/&quot;&gt;Install Docker Engine&lt;/a&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;🚀 Start up the server&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Ensure &lt;code&gt;vm.max_map_count&lt;/code&gt; &amp;gt;= 262144:&lt;/p&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;To check the value of &lt;code&gt;vm.max_map_count&lt;/code&gt;:&lt;/p&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sysctl vm.max_map_count
&lt;/code&gt;&lt;/pre&gt; 
   &lt;p&gt;Reset &lt;code&gt;vm.max_map_count&lt;/code&gt; to a value at least 262144 if it is not.&lt;/p&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# In this case, we set it to 262144:
sudo sysctl -w vm.max_map_count=262144
&lt;/code&gt;&lt;/pre&gt; 
   &lt;p&gt;This change will be reset after a system reboot. To ensure your change remains permanent, add or update the &lt;code&gt;vm.max_map_count&lt;/code&gt; value in &lt;strong&gt;/etc/sysctl.conf&lt;/strong&gt; accordingly:&lt;/p&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;vm.max_map_count=262144
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Clone the repo:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/infiniflow/ragflow.git
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Start up the server using the pre-built Docker images:&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-caution&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-stop 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;M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Caution&lt;/p&gt;
 &lt;p&gt;All Docker images are built for x86 platforms. We don&#39;t currently offer Docker images for ARM64. If you are on an ARM64 platform, follow &lt;a href=&quot;https://ragflow.io/docs/dev/build_docker_image&quot;&gt;this guide&lt;/a&gt; to build a Docker image compatible with your system.&lt;/p&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The command below downloads the &lt;code&gt;v0.26.4&lt;/code&gt; edition of the RAGFlow Docker image. See the following table for descriptions of different RAGFlow editions. To download a RAGFlow edition different from &lt;code&gt;v0.26.4&lt;/code&gt;, update the &lt;code&gt;RAGFLOW_IMAGE&lt;/code&gt; variable accordingly in &lt;strong&gt;docker/.env&lt;/strong&gt; before using &lt;code&gt;docker compose&lt;/code&gt; to start the server.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;   cd ragflow/docker

   git checkout v0.26.4
   # Optional: use a stable tag (see releases: https://github.com/infiniflow/ragflow/releases)
   # This step ensures the **entrypoint.sh** file in the code matches the Docker image version.

   # Use CPU for DeepDoc tasks:
   docker compose -f docker-compose.yml up -d

   # To use GPU to accelerate DeepDoc tasks:
   # sed -i &#39;1i DEVICE=gpu&#39; .env
   # docker compose -f docker-compose.yml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Note: Prior to &lt;code&gt;v0.22.0&lt;/code&gt;, we provided both images with embedding models and slim images without embedding models. Details as follows:&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;RAGFlow image tag&lt;/th&gt; 
   &lt;th&gt;Image size (GB)&lt;/th&gt; 
   &lt;th&gt;Has embedding models?&lt;/th&gt; 
   &lt;th&gt;Stable?&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;v0.21.1&lt;/td&gt; 
   &lt;td&gt;≈9&lt;/td&gt; 
   &lt;td&gt;✔️&lt;/td&gt; 
   &lt;td&gt;Stable release&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;v0.21.1-slim&lt;/td&gt; 
   &lt;td&gt;≈2&lt;/td&gt; 
   &lt;td&gt;❌&lt;/td&gt; 
   &lt;td&gt;Stable release&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Starting with &lt;code&gt;v0.22.0&lt;/code&gt;, we ship only the slim edition and no longer append the &lt;strong&gt;-slim&lt;/strong&gt; suffix to the image tag.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt; &lt;p&gt;Check the server status after having the server up and running:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker logs -f docker-ragflow-cpu-1
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;em&gt;The following output confirms a successful launch of the system:&lt;/em&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;
      ____   ___    ______ ______ __
     / __ \ /   |  / ____// ____// /____  _      __
    / /_/ // /| | / / __ / /_   / // __ \| | /| / /
   / _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ /
  /_/ |_|/_/  |_|\____//_/    /_/ \____/ |__/|__/

 * Running on all addresses (0.0.0.0)
&lt;/code&gt;&lt;/pre&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;If you skip this confirmation step and directly log in to RAGFlow, your browser may prompt a &lt;code&gt;network abnormal&lt;/code&gt; error because, at that moment, your RAGFlow may not be fully initialized.&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;In your web browser, enter the IP address of your server and log in to RAGFlow.&lt;/p&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;With the default settings, you only need to enter &lt;code&gt;http://IP_OF_YOUR_MACHINE&lt;/code&gt; (&lt;strong&gt;sans&lt;/strong&gt; port number) as the default HTTP serving port &lt;code&gt;80&lt;/code&gt; can be omitted when using the default configurations.&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;In &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/service_conf.yaml.template&quot;&gt;service_conf.yaml.template&lt;/a&gt;, select the desired LLM factory in &lt;code&gt;user_default_llm&lt;/code&gt; and update the &lt;code&gt;API_KEY&lt;/code&gt; field with the corresponding API key.&lt;/p&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;See &lt;a href=&quot;https://ragflow.io/docs/dev/llm_api_key_setup&quot;&gt;llm_api_key_setup&lt;/a&gt; for more information.&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;p&gt;&lt;em&gt;The show is on!&lt;/em&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;🔧 Configurations&lt;/h2&gt; 
&lt;p&gt;When it comes to system configurations, you will need to manage the following files:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/.env&quot;&gt;.env&lt;/a&gt;: Keeps the fundamental setups for the system, such as &lt;code&gt;SVR_HTTP_PORT&lt;/code&gt;, &lt;code&gt;MYSQL_PASSWORD&lt;/code&gt;, and &lt;code&gt;MINIO_PASSWORD&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/service_conf.yaml.template&quot;&gt;service_conf.yaml.template&lt;/a&gt;: Configures the back-end services. The environment variables in this file will be automatically populated when the Docker container starts. Any environment variables set within the Docker container will be available for use, allowing you to customize service behavior based on the deployment environment.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/docker-compose.yml&quot;&gt;docker-compose.yml&lt;/a&gt;: The system relies on &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/docker-compose.yml&quot;&gt;docker-compose.yml&lt;/a&gt; to start up.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/README.md&quot;&gt;./docker/README&lt;/a&gt; file provides a detailed description of the environment settings and service configurations which can be used as &lt;code&gt;${ENV_VARS}&lt;/code&gt; in the &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/service_conf.yaml.template&quot;&gt;service_conf.yaml.template&lt;/a&gt; file.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;To update the default HTTP serving port (80), go to &lt;a href=&quot;https://raw.githubusercontent.com/infiniflow/ragflow/main/docker/docker-compose.yml&quot;&gt;docker-compose.yml&lt;/a&gt; and change &lt;code&gt;80:80&lt;/code&gt; to &lt;code&gt;&amp;lt;YOUR_SERVING_PORT&amp;gt;:80&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Updates to the above configurations require a reboot of all containers to take effect:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose.yml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Switch doc engine from Elasticsearch to Infinity&lt;/h3&gt; 
&lt;p&gt;RAGFlow uses Elasticsearch by default for storing full text and vectors. To switch to &lt;a href=&quot;https://github.com/infiniflow/infinity/&quot;&gt;Infinity&lt;/a&gt;, follow these steps:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Stop all running containers:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker/docker-compose.yml down -v
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&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;code&gt;-v&lt;/code&gt; will delete the docker container volumes, and the existing data will be cleared.&lt;/p&gt; 
&lt;/div&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt; &lt;p&gt;Set &lt;code&gt;DOC_ENGINE&lt;/code&gt; in &lt;strong&gt;docker/.env&lt;/strong&gt; to &lt;code&gt;infinity&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Start the containers:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker/docker-compose.yml up -d
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&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;Switching to Infinity on a Linux/arm64 machine is not yet officially supported.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;🔧 Build a Docker Image&lt;/h2&gt; 
&lt;p&gt;This image is approximately 2 GB in size and relies on external LLM and embedding services.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly .
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or if you are behind a proxy, you can pass proxy arguments:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker build --platform linux/amd64 \
  --build-arg http_proxy=http://YOUR_PROXY:PORT \
  --build-arg https_proxy=http://YOUR_PROXY:PORT \
  -f Dockerfile -t infiniflow/ragflow:nightly .
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;🔨 Launch Service from Source for Development&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;After cloning the repository for the first time, run &lt;code&gt;git config --local --unset core.hooksPath&lt;/code&gt;, &lt;code&gt;uv tool install lefthook&lt;/code&gt; and &lt;code&gt;lefthook install&lt;/code&gt; once from the repo root to enable local Git hooks.&lt;/p&gt; 
&lt;/div&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Install &lt;code&gt;uv&lt;/code&gt;, or skip this step if it is already installed:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pipx install uv
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Clone the source code and install Python dependencies:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
uv sync --python 3.13 # install RAGFlow dependent python modules
uv run python3 ragflow_deps/download_deps.py
git config --local --unset core.hooksPath
uv tool install lefthook
lefthook install
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Launch the dependent services (MinIO, Elasticsearch, Redis, and MySQL) using Docker Compose:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker/docker-compose-base.yml up -d
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Add the following line to &lt;code&gt;/etc/hosts&lt;/code&gt; to resolve all hosts specified in &lt;strong&gt;docker/.env&lt;/strong&gt; to &lt;code&gt;127.0.0.1&lt;/code&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;127.0.0.1       es01 infinity mysql minio redis sandbox-executor-manager
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;If you cannot access HuggingFace, set the &lt;code&gt;HF_ENDPOINT&lt;/code&gt; environment variable to use a mirror site:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export HF_ENDPOINT=https://hf-mirror.com
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;If your operating system does not have jemalloc, please install it as follows:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Ubuntu
sudo apt-get install libjemalloc-dev
# CentOS
sudo yum install jemalloc
# OpenSUSE
sudo zypper install jemalloc
# macOS
brew install jemalloc
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Launch backend service:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;source .venv/bin/activate
export PYTHONPATH=$(pwd)
bash docker/launch_backend_service.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install frontend dependencies:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd web
npm install
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Launch frontend service:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;em&gt;The following output confirms a successful launch of the system:&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/0daf462c-a24d-4496-a66f-92533534e187&quot; alt=&quot;RAGFlow web interface&quot; /&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Stop RAGFlow front-end and back-end service after development is complete:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pkill -f &quot;ragflow_server.py|task_executor.py&quot;
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;📚 Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/dev/&quot;&gt;Quickstart&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/dev/configurations&quot;&gt;Configuration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/dev/release_notes&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/category/user-guides&quot;&gt;User guides&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/category/developer-guides&quot;&gt;Developer guides&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/dev/category/references&quot;&gt;References&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://ragflow.io/docs/dev/faq&quot;&gt;FAQs&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📜 Roadmap&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://github.com/infiniflow/ragflow/issues/12241&quot;&gt;RAGFlow Roadmap 2026&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;🏄 Community&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/NjYzJD3GM3&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://x.com/infiniflowai&quot;&gt;X&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/orgs/infiniflow/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🙌 Contributing&lt;/h2&gt; 
&lt;p&gt;RAGFlow flourishes via open-source collaboration. In this spirit, we embrace diverse contributions from the community. If you would like to be a part, review our &lt;a href=&quot;https://ragflow.io/docs/dev/contributing&quot;&gt;Contribution Guidelines&lt;/a&gt; first.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>podman-container-tools/podman</title>
      <link>https://github.com/podman-container-tools/podman</link>
      <description>&lt;p&gt;Podman: A tool for managing OCI containers and pods.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/containers/common/main/logos/podman-logo-full-vert.png&quot; alt=&quot;PODMAN logo&quot; /&gt;&lt;/p&gt; 
&lt;h1&gt;Podman: A tool for managing OCI containers and pods&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/License-Apache_2.0-blue.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/containers/podman&quot; alt=&quot;GitHub release (latest SemVer)&quot; /&gt; &lt;a href=&quot;https://goreportcard.com/report/github.com/containers/podman/v6&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/github.com/containers/podman/v6&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.bestpractices.dev/projects/10499&quot;&gt;&lt;img src=&quot;https://www.bestpractices.dev/projects/10499/badge&quot; alt=&quot;OpenSSF Best Practices&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://insights.linuxfoundation.org/project/podman-container-tools/repository/containers-podman&quot;&gt;&lt;img src=&quot;https://insights.linuxfoundation.org/api/badge/health-score?project=podman-container-tools&amp;amp;repos=https://github.com/containers/podman&quot; alt=&quot;LFX Health Score&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://insights.linuxfoundation.org/project/podman-container-tools/repository/containers-podman&quot;&gt;&lt;img src=&quot;https://insights.linuxfoundation.org/api/badge/contributors?project=podman-container-tools&amp;amp;repos=https://github.com/containers/podman&quot; alt=&quot;LFX Contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;p&gt;Podman (the POD MANager) is a tool for managing containers and images, volumes mounted into those containers, and pods made from groups of containers. Podman runs containers on Linux, but can also be used on Mac and Windows systems using a Podman-managed virtual machine. Podman is based on libpod, a library for container lifecycle management that is also contained in this repository. The libpod library provides APIs for managing containers, pods, container images, and volumes.&lt;/p&gt; 
&lt;p&gt;Podman releases a new major or minor release 4 times a year, during the second week of February, May, August, and November. Patch releases are more frequent and may occur at any time to get bugfixes out to users. All releases are PGP signed. Public keys of members of the team approved to make releases are located &lt;a href=&quot;https://github.com/containers/release-keys/tree/main/podman&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Only the most recent release receives upstream support. Exceptions are sometimes made after a major Podman release, in recognition of the fact that not all users and distributions will be able to quickly migrate to a breaking change release. After the release of Podman 6.0, the Podman maintainers have decided to extend upstream support of the v5.8 series of releases until the 2nd week of June in 2027, one year after the release of Podman 6.0. This support will only include CVE fixes and critical bugfixes.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Continuous Integration: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/containers/podman/actions/workflows/ci.yml?query=branch%3Amain&quot;&gt;&lt;img src=&quot;https://github.com/containers/podman/actions/workflows/ci.yml/badge.svg?branch=main&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://godoc.org/github.com/containers/podman/libpod&quot;&gt;GoDoc: &lt;img src=&quot;https://godoc.org/github.com/containers/podman/libpod?status.svg?sanitize=true&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/DOWNLOADS.md&quot;&gt;Downloads&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Overview and scope&lt;/h2&gt; 
&lt;p&gt;At a high level, the scope of Podman and libpod is the following:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Support for multiple container image formats, including OCI and Docker images.&lt;/li&gt; 
 &lt;li&gt;Full management of those images, including pulling from various sources (including trust and verification), creating (built via Containerfile or Dockerfile or committed from a container), and pushing to registries and other storage backends.&lt;/li&gt; 
 &lt;li&gt;Full management of container lifecycle, including creation (both from an image and from an exploded root filesystem), running, checkpointing and restoring (via CRIU), and removal.&lt;/li&gt; 
 &lt;li&gt;Full management of container networking, using Netavark.&lt;/li&gt; 
 &lt;li&gt;Support for pods, groups of containers that share resources and are managed together.&lt;/li&gt; 
 &lt;li&gt;Support for running containers and pods without root or other elevated privileges.&lt;/li&gt; 
 &lt;li&gt;Resource isolation of containers and pods.&lt;/li&gt; 
 &lt;li&gt;Support for a Docker-compatible CLI interface, which can both run containers locally and on remote systems.&lt;/li&gt; 
 &lt;li&gt;No manager daemon, for improved security and lower resource utilization at idle.&lt;/li&gt; 
 &lt;li&gt;Support for a REST API providing both a Docker-compatible interface and an improved interface exposing advanced Podman functionality.&lt;/li&gt; 
 &lt;li&gt;Support for running on Windows and Mac via virtual machines run by &lt;code&gt;podman machine&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;p&gt;The future of Podman feature development can be found in its &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/ROADMAP.md&quot;&gt;roadmap&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;h2&gt;Communications&lt;/h2&gt; 
&lt;p&gt;If you think you&#39;ve identified a security issue in the project, please &lt;em&gt;DO NOT&lt;/em&gt; report the issue publicly via the GitHub issue tracker, mailing list, or IRC. Instead, send an email with as many details as possible to &lt;code&gt;security@lists.podman.io&lt;/code&gt;. This is a private mailing list for the core maintainers.&lt;/p&gt; 
&lt;p&gt;For general questions and discussion, please use Podman&#39;s &lt;a href=&quot;https://podman.io/community/#slack-irc-matrix-and-discord&quot;&gt;channels&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For discussions around issues/bugs and features, you can use the GitHub &lt;a href=&quot;https://github.com/containers/podman/issues&quot;&gt;issues&lt;/a&gt; and &lt;a href=&quot;https://github.com/containers/podman/pulls&quot;&gt;PRs&lt;/a&gt; tracking system.&lt;/p&gt; 
&lt;p&gt;There is also a &lt;a href=&quot;https://lists.podman.io/archives/&quot;&gt;mailing list&lt;/a&gt; at &lt;code&gt;lists.podman.io&lt;/code&gt;. You can subscribe by sending a message to &lt;code&gt;podman-join@lists.podman.io&lt;/code&gt; with the subject &lt;code&gt;subscribe&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Community Meetings&lt;/h3&gt; 
&lt;p&gt;All Podman meetings are open to everyone, free to attend, and hosted via Zoom through the CNCF/Linux Foundation. The full calendar is available on the &lt;a href=&quot;https://zoom-lfx.platform.linuxfoundation.org/meetings/podman-container-tools?view=month&quot;&gt;Podman Container Tools LFX Meetings page&lt;/a&gt;. Registering for a meeting sends you an invite for that meeting and all subsequent recurring instances.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Meeting&lt;/th&gt; 
   &lt;th&gt;Schedule&lt;/th&gt; 
   &lt;th&gt;Format&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://zoom-lfx.platform.linuxfoundation.org/meeting/97486138230?password=3144ae43-0fd5-457e-a495-bb4e0202e9c2&quot;&gt;Podman Community Meeting&lt;/a&gt; and its &lt;a href=&quot;https://hackmd.io/fc1zraYdS0-klJ2KJcfC7w?both&quot;&gt;agenda&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;First &lt;strong&gt;Tuesday of even-numbered months&lt;/strong&gt; (Feb, Apr, Jun, Aug, Oct, Dec) at &lt;strong&gt;11:00 a.m. Eastern&lt;/strong&gt; (UTC-4 summer / UTC-5 winter)&lt;/td&gt; 
   &lt;td&gt;~1 hour — demos, announcements, and community updates&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://zoom-lfx.platform.linuxfoundation.org/meeting/92776077694?password=deea5903-07a5-4e4d-9ad9-a6f52319fabe&quot;&gt;Podman Monday Office Hours&lt;/a&gt; and its &lt;a href=&quot;https://hackmd.io/@TomSweeneyRedHat/H1qIC9nkMe&quot;&gt;agenda&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Every &lt;strong&gt;Monday at 10:00 a.m. Eastern&lt;/strong&gt; (UTC-4 summer / UTC-5 winter)&lt;/td&gt; 
   &lt;td&gt;30 min — technical discussions, open topics&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://zoom-lfx.platform.linuxfoundation.org/meeting/96031375483?password=97015335-907e-4f54-9eff-b3068d7052c9&quot;&gt;Podman Thursday Office Hours&lt;/a&gt; and its &lt;a href=&quot;https://hackmd.io/@TomSweeneyRedHat/H1qIC9nkMe&quot;&gt;agenda&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Every &lt;strong&gt;Thursday at 11:00 a.m. Eastern&lt;/strong&gt; (UTC-4 summer / UTC-5 winter)&lt;/td&gt; 
   &lt;td&gt;30 min — technical discussions, open topics&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Rootless&lt;/h2&gt; 
&lt;p&gt;Podman can be easily run as a normal user, without requiring a setuid binary. When run without root, Podman containers use user namespaces to set root in the container to the user running Podman. Rootless Podman runs locked-down containers with no privileges that the user running the container does not have. Some of these restrictions can be lifted (via &lt;code&gt;--privileged&lt;/code&gt;, for example), but rootless containers will never have more privileges than the user that launched them. If you run Podman as your user and mount in &lt;code&gt;/etc/passwd&lt;/code&gt; from the host, you still won&#39;t be able to change it, since your user doesn&#39;t have permission to do so.&lt;/p&gt; 
&lt;p&gt;Almost all normal Podman functionality is available, though there are some &lt;a href=&quot;https://github.com/containers/podman/raw/main/rootless.md&quot;&gt;shortcomings&lt;/a&gt;. Any recent Podman release should be able to run rootless without any additional configuration, though your operating system may require some additional configuration detailed in the &lt;a href=&quot;https://podman.io/getting-started/installation&quot;&gt;install guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;A little configuration by an administrator is required before rootless Podman can be used, the necessary setup is documented &lt;a href=&quot;https://github.com/containers/podman/raw/main/docs/tutorials/rootless_tutorial.md&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Podman Desktop&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://podman-desktop.io/&quot;&gt;Podman Desktop&lt;/a&gt; provides a local development environment for Podman and Kubernetes on Linux, Windows, and Mac machines. It is a full-featured desktop UI frontend for Podman which uses the &lt;code&gt;podman machine&lt;/code&gt; backend on non-Linux operating systems to run containers. It supports full container lifecycle management (building, pulling, and pushing images, creating and managing containers, creating and managing pods, and working with Kubernetes YAML). The project develops on &lt;a href=&quot;https://github.com/containers/podman-desktop&quot;&gt;GitHub&lt;/a&gt; and contributions are welcome.&lt;/p&gt; 
&lt;h2&gt;Out of scope&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Specialized signing and pushing of images to various storage backends. See &lt;a href=&quot;https://github.com/containers/skopeo/&quot;&gt;Skopeo&lt;/a&gt; for those tasks.&lt;/li&gt; 
 &lt;li&gt;Support for the Kubernetes CRI interface for container management. The &lt;a href=&quot;https://github.com/cri-o/cri-o&quot;&gt;CRI-O&lt;/a&gt; daemon specializes in that.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;OCI Projects Plans&lt;/h2&gt; 
&lt;p&gt;Podman uses OCI projects and best of breed libraries for different aspects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Runtime: We use the &lt;a href=&quot;https://github.com/opencontainers/runtime-tools&quot;&gt;OCI runtime tools&lt;/a&gt; to generate OCI runtime configurations that can be used with any OCI-compliant runtime, like &lt;a href=&quot;https://github.com/containers/crun/&quot;&gt;crun&lt;/a&gt; and &lt;a href=&quot;https://github.com/opencontainers/runc/&quot;&gt;runc&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Images: Image management uses the &lt;a href=&quot;https://github.com/containers/image&quot;&gt;containers/image&lt;/a&gt; library.&lt;/li&gt; 
 &lt;li&gt;Storage: Container and image storage is managed by &lt;a href=&quot;https://github.com/containers/storage&quot;&gt;containers/storage&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Networking: Networking support through use of &lt;a href=&quot;https://github.com/containers/netavark&quot;&gt;Netavark&lt;/a&gt; and &lt;a href=&quot;https://github.com/containers/aardvark-dns&quot;&gt;Aardvark&lt;/a&gt;. Rootless networking is handled via &lt;a href=&quot;https://passt.top/passt&quot;&gt;pasta&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Builds: Builds are supported via &lt;a href=&quot;https://github.com/containers/buildah&quot;&gt;Buildah&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Conmon: &lt;a href=&quot;https://github.com/containers/conmon&quot;&gt;Conmon&lt;/a&gt; is a tool for monitoring OCI runtimes, used by both Podman and CRI-O.&lt;/li&gt; 
 &lt;li&gt;Seccomp: A unified &lt;a href=&quot;https://github.com/containers/container-libs/raw/main/common/pkg/seccomp/seccomp.json&quot;&gt;Seccomp&lt;/a&gt; policy for Podman, Buildah, and CRI-O.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Podman Information for Developers&lt;/h2&gt; 
&lt;p&gt;For blogs, release announcements and more, please checkout the &lt;a href=&quot;https://podman.io&quot;&gt;podman.io&lt;/a&gt; website!&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/install.md&quot;&gt;Installation notes&lt;/a&gt;&lt;/strong&gt; Information on how to install Podman in your environment.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/containers/container-libs/raw/main/common/pkg/hooks/README.md&quot;&gt;OCI Hooks Support&lt;/a&gt;&lt;/strong&gt; Information on how Podman configures &lt;a href=&quot;https://github.com/opencontainers/runtime-spec/raw/v1.0.2/config.md#posix-platform-hooks&quot;&gt;OCI Hooks&lt;/a&gt; to run when launching a container.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.podman.io/en/latest/_static/api.html&quot;&gt;Podman API&lt;/a&gt;&lt;/strong&gt; Documentation on the Podman REST API.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://podman.readthedocs.io/en/latest/Commands.html&quot;&gt;Podman Commands&lt;/a&gt;&lt;/strong&gt; A list of the Podman commands with links to their man pages and in many cases videos showing the commands in use.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/containers/image_build/raw/main/podman/README.md&quot;&gt;Podman Container Images&lt;/a&gt;&lt;/strong&gt; Information on the Podman Container Images found on &lt;a href=&quot;https://quay.io/podman/stable&quot;&gt;quay.io&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/troubleshooting.md&quot;&gt;Podman Troubleshooting Guide&lt;/a&gt;&lt;/strong&gt; A list of common issues and solutions for Podman.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/transfer.md&quot;&gt;Podman Usage Transfer&lt;/a&gt;&lt;/strong&gt; Useful information for ops and dev transfer as it relates to infrastructure that utilizes Podman. This page includes tables showing Docker commands and their Podman equivalent commands.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/docs/tutorials&quot;&gt;Tutorials&lt;/a&gt;&lt;/strong&gt; Tutorials on using Podman.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/containers/podman/raw/main/docs/tutorials/remote_client.md&quot;&gt;Remote Client&lt;/a&gt;&lt;/strong&gt; A brief how-to on using the Podman remote client.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/containers/podman/raw/main/docs/tutorials/rootless_tutorial.md&quot;&gt;Basic Setup and Use of Podman in a Rootless environment&lt;/a&gt;&lt;/strong&gt; A tutorial showing the setup and configuration necessary to run Rootless Podman.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/RELEASE_NOTES.md&quot;&gt;Release Notes&lt;/a&gt;&lt;/strong&gt; Release notes for recent Podman versions.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/podman-container-tools/podman/main/CONTRIBUTING.md&quot;&gt;Contributing&lt;/a&gt;&lt;/strong&gt; Information about contributing to this project.&lt;/p&gt; 
&lt;h2&gt;Buildah and Podman relationship&lt;/h2&gt; 
&lt;p&gt;Buildah and Podman are two complementary open-source projects that are available on most Linux platforms and both projects reside at &lt;a href=&quot;https://github.com&quot;&gt;GitHub.com&lt;/a&gt; with Buildah &lt;a href=&quot;https://github.com/containers/buildah&quot;&gt;here&lt;/a&gt; and Podman &lt;a href=&quot;https://github.com/containers/podman&quot;&gt;here&lt;/a&gt;. Both, Buildah and Podman are command line tools that work on Open Container Initiative (OCI) images and containers. The two projects differentiate in their specialization.&lt;/p&gt; 
&lt;p&gt;Buildah specializes in building OCI images. Buildah&#39;s commands replicate all of the commands that are found in a Dockerfile. This allows building images with and without Dockerfiles while not requiring any root privileges. Buildah’s ultimate goal is to provide a lower-level coreutils interface to build images. The flexibility of building images without Dockerfiles allows for the integration of other scripting languages into the build process. Buildah follows a simple fork-exec model and does not run as a daemon but it is based on a comprehensive API in golang, which can be vendored into other tools.&lt;/p&gt; 
&lt;p&gt;Podman specializes in all of the commands and functions that help you to maintain and modify OCI images, such as pulling and tagging. It also allows you to create, run, and maintain those containers created from those images. For building container images via Dockerfiles, Podman uses Buildah&#39;s golang API and can be installed independently from Buildah.&lt;/p&gt; 
&lt;p&gt;A major difference between Podman and Buildah is their concept of a container. Podman allows users to create &quot;traditional containers&quot; where the intent of these containers is to be long lived. While Buildah containers are really just created to allow content to be added back to the container image. An easy way to think of it is the &lt;code&gt;buildah run&lt;/code&gt; command emulates the RUN command in a Dockerfile while the &lt;code&gt;podman run&lt;/code&gt; command emulates the &lt;code&gt;docker run&lt;/code&gt; command in functionality. Because of this and their underlying storage differences, you can not see Podman containers from within Buildah or vice versa.&lt;/p&gt; 
&lt;p&gt;In short, Buildah is an efficient way to create OCI images while Podman allows you to manage and maintain those images and containers in a production environment using familiar container cli commands. For more details, see the &lt;a href=&quot;https://github.com/containers/buildah/tree/main/docs/containertools&quot;&gt;Container Tools Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Podman Hello&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;$ podman run quay.io/podman/hello
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob a6b3126f3807 done
Copying config 25c667d086 done
Writing manifest to image destination
Storing signatures
!... Hello Podman World ...!

         .--&quot;--.
       / -     - \
      / (O)   (O) \
   ~~~| -=(,Y,)=- |
    .---. /`  \   |~~
 ~/  o  o \~~~~.----. ~~
  | =(X)= |~  / (O (O) \
   ~~~~~~~  ~| =(Y_)=-  |
  ~~~~    ~~~|   U      |~~

Project:   https://github.com/containers/podman
Website:   https://podman.io
Documents: https://docs.podman.io
Twitter:   @Podman_io
&lt;/code&gt;&lt;/pre&gt;</description>
      
    </item>
    
    <item>
      <title>fatedier/frp</title>
      <link>https://github.com/fatedier/frp</link>
      <description>&lt;p&gt;A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;frp&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://circleci.com/gh/fatedier/frp&quot;&gt;&lt;img src=&quot;https://circleci.com/gh/fatedier/frp.svg?style=shield&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/fatedier/frp/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/tag/fatedier/frp.svg?label=release&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://somsubhra.github.io/github-release-stats/?username=fatedier&amp;amp;repository=frp&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/fatedier/frp/total.svg?logo=github&quot; alt=&quot;GitHub Releases Stats&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/README.md&quot;&gt;README&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/README_zh.md&quot;&gt;中文文档&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;frp is an open source project with its ongoing development made possible entirely by the support of our awesome sponsors. If you&#39;d like to join them, please consider &lt;a href=&quot;https://github.com/sponsors/fatedier&quot;&gt;sponsoring frp&#39;s development&lt;/a&gt;.&lt;/p&gt; 
&lt;h3 align=&quot;center&quot;&gt;Gold Sponsors&lt;/h3&gt; 
&lt;!--gold sponsors start--&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/beclab/Olares&quot; target=&quot;_blank&quot;&gt; &lt;img width=&quot;420px&quot; src=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/sponsor_olares.jpeg&quot; /&gt; &lt;br /&gt; &lt;b&gt;The sovereign cloud that puts you in control&lt;/b&gt; &lt;br /&gt; &lt;sub&gt;An open source, self-hosted alternative to public clouds, built for data ownership and privacy&lt;/sub&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;&lt;a href=&quot;http://Recall.ai&quot;&gt;Recall.ai&lt;/a&gt; - API for meeting recordings&lt;/h2&gt; 
 &lt;p&gt;If you&#39;re looking for a meeting recording API, consider checking out &lt;a href=&quot;https://www.recall.ai/?utm_source=github&amp;amp;utm_medium=sponsorship&amp;amp;utm_campaign=fatedier-frp&quot;&gt;Recall.ai&lt;/a&gt;,&lt;/p&gt; 
 &lt;p&gt;an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://jb.gg/frp&quot; target=&quot;_blank&quot;&gt; &lt;img width=&quot;420px&quot; src=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/sponsor_jetbrains.jpg&quot; /&gt; &lt;br /&gt; &lt;b&gt;The complete IDE crafted for professional Go developers&lt;/b&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;!--gold sponsors end--&gt; 
&lt;h2&gt;What is frp?&lt;/h2&gt; 
&lt;p&gt;frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports &lt;strong&gt;TCP&lt;/strong&gt; and &lt;strong&gt;UDP&lt;/strong&gt;, as well as &lt;strong&gt;HTTP&lt;/strong&gt; and &lt;strong&gt;HTTPS&lt;/strong&gt; protocols, enabling requests to be forwarded to internal services via domain name.&lt;/p&gt; 
&lt;p&gt;frp also offers a P2P connect mode.&lt;/p&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;!-- vim-markdown-toc GFM --&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#development-status&quot;&gt;Development Status&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#about-v2&quot;&gt;About V2&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#architecture&quot;&gt;Architecture&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#example-usage&quot;&gt;Example Usage&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#access-your-computer-in-a-lan-network-via-ssh&quot;&gt;Access your computer in a LAN network via SSH&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#multiple-ssh-services-sharing-the-same-port&quot;&gt;Multiple SSH services sharing the same port&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#accessing-internal-web-services-with-custom-domains-in-lan&quot;&gt;Accessing Internal Web Services with Custom Domains in LAN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#forward-dns-query-requests&quot;&gt;Forward DNS query requests&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#forward-unix-domain-socket&quot;&gt;Forward Unix Domain Socket&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#expose-a-simple-http-file-server&quot;&gt;Expose a simple HTTP file server&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#enable-https-for-a-local-https-service&quot;&gt;Enable HTTPS for a local HTTP(S) service&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#expose-your-service-privately&quot;&gt;Expose your service privately&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#p2p-mode&quot;&gt;P2P Mode&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#features&quot;&gt;Features&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#configuration-files&quot;&gt;Configuration Files&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#using-environment-variables&quot;&gt;Using Environment Variables&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#split-configures-into-different-files&quot;&gt;Split Configures Into Different Files&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#server-dashboard&quot;&gt;Server Dashboard&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#client-admin-ui&quot;&gt;Client Admin UI&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#dynamic-proxy-management-store&quot;&gt;Dynamic Proxy Management (Store)&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#monitor&quot;&gt;Monitor&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#prometheus&quot;&gt;Prometheus&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#authenticating-the-client&quot;&gt;Authenticating the Client&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#token-authentication&quot;&gt;Token Authentication&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#oidc-authentication&quot;&gt;OIDC Authentication&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#encryption-and-compression&quot;&gt;Encryption and Compression&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#tls&quot;&gt;TLS&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#hot-reloading-frpc-configuration&quot;&gt;Hot-Reloading frpc configuration&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#get-proxy-status-from-client&quot;&gt;Get proxy status from client&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#only-allowing-certain-ports-on-the-server&quot;&gt;Only allowing certain ports on the server&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#port-reuse&quot;&gt;Port Reuse&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#bandwidth-limit&quot;&gt;Bandwidth Limit&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#for-each-proxy&quot;&gt;For Each Proxy&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#tcp-stream-multiplexing&quot;&gt;TCP Stream Multiplexing&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#support-kcp-protocol&quot;&gt;Support KCP Protocol&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#support-quic-protocol&quot;&gt;Support QUIC Protocol&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#connection-pooling&quot;&gt;Connection Pooling&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#load-balancing&quot;&gt;Load balancing&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#service-health-check&quot;&gt;Service Health Check&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#rewriting-the-http-host-header&quot;&gt;Rewriting the HTTP Host Header&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#setting-other-http-headers&quot;&gt;Setting other HTTP Headers&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#get-real-ip&quot;&gt;Get Real IP&lt;/a&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#http-x-forwarded-for&quot;&gt;HTTP X-Forwarded-For&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#proxy-protocol&quot;&gt;Proxy Protocol&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#require-http-basic-auth-password-for-web-services&quot;&gt;Require HTTP Basic Auth (Password) for Web Services&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#custom-subdomain-names&quot;&gt;Custom Subdomain Names&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#url-routing&quot;&gt;URL Routing&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#tcp-port-multiplexing&quot;&gt;TCP Port Multiplexing&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#connecting-to-frps-via-proxy&quot;&gt;Connecting to frps via PROXY&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#port-range-mapping&quot;&gt;Port range mapping&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#client-plugins&quot;&gt;Client Plugins&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#server-manage-plugins&quot;&gt;Server Manage Plugins&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#ssh-tunnel-gateway&quot;&gt;SSH Tunnel Gateway&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#virtual-network-virtualnet&quot;&gt;Virtual Network (VirtualNet)&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#feature-gates&quot;&gt;Feature Gates&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#available-feature-gates&quot;&gt;Available Feature Gates&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#enabling-feature-gates&quot;&gt;Enabling Feature Gates&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#feature-lifecycle&quot;&gt;Feature Lifecycle&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#related-projects&quot;&gt;Related Projects&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#donation&quot;&gt;Donation&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#github-sponsors&quot;&gt;GitHub Sponsors&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#paypal&quot;&gt;PayPal&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- vim-markdown-toc --&gt; 
&lt;h2&gt;Development Status&lt;/h2&gt; 
&lt;p&gt;frp is currently under development. You can try the latest release version in the &lt;code&gt;master&lt;/code&gt; branch, or use the &lt;code&gt;dev&lt;/code&gt; branch to access the version currently in development.&lt;/p&gt; 
&lt;p&gt;We are currently working on version 2 and attempting to perform some code refactoring and improvements. However, please note that it will not be compatible with version 1.&lt;/p&gt; 
&lt;p&gt;We will transition from version 0 to version 1 at the appropriate time and will only accept bug fixes and improvements, rather than big feature requests.&lt;/p&gt; 
&lt;h3&gt;About V2&lt;/h3&gt; 
&lt;p&gt;The complexity and difficulty of the v2 version are much higher than anticipated. I can only work on its development during fragmented time periods, and the constant interruptions disrupt productivity significantly. Given this situation, we will continue to optimize and iterate on the current version until we have more free time to proceed with the major version overhaul.&lt;/p&gt; 
&lt;p&gt;The concept behind v2 is based on my years of experience and reflection in the cloud-native domain, particularly in K8s and ServiceMesh. Its core is a modernized four-layer and seven-layer proxy, similar to envoy. This proxy itself is highly scalable, not only capable of implementing the functionality of intranet penetration but also applicable to various other domains. Building upon this highly scalable core, we aim to implement all the capabilities of frp v1 while also addressing the functionalities that were previously unachievable or difficult to implement in an elegant manner. Furthermore, we will maintain efficient development and iteration capabilities.&lt;/p&gt; 
&lt;p&gt;In addition, I envision frp itself becoming a highly extensible system and platform, similar to how we can provide a range of extension capabilities based on K8s. In K8s, we can customize development according to enterprise needs, utilizing features such as CRD, controller mode, webhook, CSI, and CNI. In frp v1, we introduced the concept of server plugins, which implemented some basic extensibility. However, it relies on a simple HTTP protocol and requires users to start independent processes and manage them on their own. This approach is far from flexible and convenient, and real-world demands vary greatly. It is unrealistic to expect a non-profit open-source project maintained by a few individuals to meet everyone&#39;s needs.&lt;/p&gt; 
&lt;p&gt;Finally, we acknowledge that the current design of modules such as configuration management, permission verification, certificate management, and API management is not modern enough. While we may carry out some optimizations in the v1 version, ensuring compatibility remains a challenging issue that requires a considerable amount of effort to address.&lt;/p&gt; 
&lt;p&gt;We sincerely appreciate your support for frp.&lt;/p&gt; 
&lt;h2&gt;Architecture&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/architecture.jpg&quot; alt=&quot;architecture&quot; width=&quot;760&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Example Usage&lt;/h2&gt; 
&lt;p&gt;To begin, download the latest program for your operating system and architecture from the &lt;a href=&quot;https://github.com/fatedier/frp/releases&quot;&gt;Release&lt;/a&gt; page.&lt;/p&gt; 
&lt;p&gt;Next, place the &lt;code&gt;frps&lt;/code&gt; binary and server configuration file on Server A, which has a public IP address.&lt;/p&gt; 
&lt;p&gt;Finally, place the &lt;code&gt;frpc&lt;/code&gt; binary and client configuration file on Server B, which is located on a LAN that cannot be directly accessed from the public internet.&lt;/p&gt; 
&lt;p&gt;Some antiviruses improperly mark frpc as malware and delete it. This is due to frp being a networking tool capable of creating reverse proxies. Antiviruses sometimes flag reverse proxies due to their ability to bypass firewall port restrictions. If you are using antivirus, then you may need to whitelist/exclude frpc in your antivirus settings to avoid accidental quarantine/deletion. See &lt;a href=&quot;https://github.com/fatedier/frp/issues/3637&quot;&gt;issue 3637&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;h3&gt;Access your computer in a LAN network via SSH&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Modify &lt;code&gt;frps.toml&lt;/code&gt; on server A by setting the &lt;code&gt;bindPort&lt;/code&gt; for frp clients to connect to:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
bindPort = 7000
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Start &lt;code&gt;frps&lt;/code&gt; on server A:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;./frps -c ./frps.toml&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;Modify &lt;code&gt;frpc.toml&lt;/code&gt; on server B and set the &lt;code&gt;serverAddr&lt;/code&gt; field to the public IP address of your frps server:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;ssh&quot;
type = &quot;tcp&quot;
localIP = &quot;127.0.0.1&quot;
localPort = 22
remotePort = 6000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that the &lt;code&gt;localPort&lt;/code&gt; (listened on the client) and &lt;code&gt;remotePort&lt;/code&gt; (exposed on the server) are used for traffic going in and out of the frp system, while the &lt;code&gt;serverPort&lt;/code&gt; is used for communication between frps and frpc.&lt;/p&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt; on server B:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;./frpc -c ./frpc.toml&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;5&quot;&gt; 
 &lt;li&gt;To access server B from another machine through server A via SSH (assuming the username is &lt;code&gt;test&lt;/code&gt;), use the following command:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;ssh -oPort=6000 test@x.x.x.x&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Multiple SSH services sharing the same port&lt;/h3&gt; 
&lt;p&gt;This example implements multiple SSH services exposed through the same port using a proxy of type tcpmux. Similarly, as long as the client supports the HTTP Connect proxy connection method, port reuse can be achieved in this way.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Deploy frps on a machine with a public IP and modify the frps.toml file. Here is a simplified configuration:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;bindPort = 7000
tcpmuxHTTPConnectPort = 5002
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Deploy frpc on the internal machine A with the following configuration:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;ssh1&quot;
type = &quot;tcpmux&quot;
multiplexer = &quot;httpconnect&quot;
customDomains = [&quot;machine-a.example.com&quot;]
localIP = &quot;127.0.0.1&quot;
localPort = 22
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;Deploy another frpc on the internal machine B with the following configuration:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;ssh2&quot;
type = &quot;tcpmux&quot;
multiplexer = &quot;httpconnect&quot;
customDomains = [&quot;machine-b.example.com&quot;]
localIP = &quot;127.0.0.1&quot;
localPort = 22
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt;To access internal machine A using SSH ProxyCommand, assuming the username is &quot;test&quot;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;ssh -o &#39;proxycommand socat - PROXY:x.x.x.x:%h:%p,proxyport=5002&#39; test@machine-a.example.com&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;5&quot;&gt; 
 &lt;li&gt;To access internal machine B, the only difference is the domain name, assuming the username is &quot;test&quot;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;ssh -o &#39;proxycommand socat - PROXY:x.x.x.x:%h:%p,proxyport=5002&#39; test@machine-b.example.com&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Accessing Internal Web Services with Custom Domains in LAN&lt;/h3&gt; 
&lt;p&gt;Sometimes we need to expose a local web service behind a NAT network to others for testing purposes with our own domain name.&lt;/p&gt; 
&lt;p&gt;Unfortunately, we cannot resolve a domain name to a local IP. However, we can use frp to expose an HTTP(S) service.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Modify &lt;code&gt;frps.toml&lt;/code&gt; and set the HTTP port for vhost to 8080:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
bindPort = 7000
vhostHTTPPort = 8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to configure an https proxy, you need to set up the &lt;code&gt;vhostHTTPSPort&lt;/code&gt;.&lt;/p&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Start &lt;code&gt;frps&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;./frps -c ./frps.toml&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;Modify &lt;code&gt;frpc.toml&lt;/code&gt; and set &lt;code&gt;serverAddr&lt;/code&gt; to the IP address of the remote frps server. Specify the &lt;code&gt;localPort&lt;/code&gt; of your web service:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;web&quot;
type = &quot;http&quot;
localPort = 80
customDomains = [&quot;www.example.com&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;./frpc -c ./frpc.toml&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;5&quot;&gt; 
 &lt;li&gt; &lt;p&gt;Map the A record of &lt;code&gt;www.example.com&lt;/code&gt; to either the public IP of the remote frps server or a CNAME record pointing to your original domain.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Visit your local web service using url &lt;code&gt;http://www.example.com:8080&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Forward DNS query requests&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Modify &lt;code&gt;frps.toml&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
bindPort = 7000
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Start &lt;code&gt;frps&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;./frps -c ./frps.toml&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;Modify &lt;code&gt;frpc.toml&lt;/code&gt; and set &lt;code&gt;serverAddr&lt;/code&gt; to the IP address of the remote frps server. Forward DNS query requests to the Google Public DNS server &lt;code&gt;8.8.8.8:53&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;dns&quot;
type = &quot;udp&quot;
localIP = &quot;8.8.8.8&quot;
localPort = 53
remotePort = 6000
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt;Start frpc:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;./frpc -c ./frpc.toml&lt;/code&gt;&lt;/p&gt; 
&lt;ol start=&quot;5&quot;&gt; 
 &lt;li&gt;Test DNS resolution using the &lt;code&gt;dig&lt;/code&gt; command:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;dig @x.x.x.x -p 6000 www.google.com&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Forward Unix Domain Socket&lt;/h3&gt; 
&lt;p&gt;Expose a Unix domain socket (e.g. the Docker daemon socket) as TCP.&lt;/p&gt; 
&lt;p&gt;Configure &lt;code&gt;frps&lt;/code&gt; as above.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt; with the following configuration:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;unix_domain_socket&quot;
type = &quot;tcp&quot;
remotePort = 6000
[proxies.plugin]
type = &quot;unix_domain_socket&quot;
unixPath = &quot;/var/run/docker.sock&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Test the configuration by getting the docker version using &lt;code&gt;curl&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;curl http://x.x.x.x:6000/version&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Expose a simple HTTP file server&lt;/h3&gt; 
&lt;p&gt;Expose a simple HTTP file server to access files stored in the LAN from the public Internet.&lt;/p&gt; 
&lt;p&gt;Configure &lt;code&gt;frps&lt;/code&gt; as described above, then:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt; with the following configuration:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;test_static_file&quot;
type = &quot;tcp&quot;
remotePort = 6000
[proxies.plugin]
type = &quot;static_file&quot;
localPath = &quot;/tmp/files&quot;
stripPrefix = &quot;static&quot;
httpUser = &quot;abc&quot;
httpPassword = &quot;abc&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Visit &lt;code&gt;http://x.x.x.x:6000/static/&lt;/code&gt; from your browser and specify correct username and password to view files in &lt;code&gt;/tmp/files&lt;/code&gt; on the &lt;code&gt;frpc&lt;/code&gt; machine.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Enable HTTPS for a local HTTP(S) service&lt;/h3&gt; 
&lt;p&gt;You may substitute &lt;code&gt;https2https&lt;/code&gt; for the plugin, and point the &lt;code&gt;localAddr&lt;/code&gt; to a HTTPS endpoint.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt; with the following configuration:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;test_https2http&quot;
type = &quot;https&quot;
customDomains = [&quot;test.example.com&quot;]

[proxies.plugin]
type = &quot;https2http&quot;
localAddr = &quot;127.0.0.1:80&quot;
crtPath = &quot;./server.crt&quot;
keyPath = &quot;./server.key&quot;
hostHeaderRewrite = &quot;127.0.0.1&quot;
requestHeaders.set.x-from-where = &quot;frp&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Visit &lt;code&gt;https://test.example.com&lt;/code&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Expose your service privately&lt;/h3&gt; 
&lt;p&gt;To mitigate risks associated with exposing certain services directly to the public network, STCP (Secret TCP) mode requires a preshared key to be used for access to the service from other clients.&lt;/p&gt; 
&lt;p&gt;Configure &lt;code&gt;frps&lt;/code&gt; same as above.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt; on machine B with the following config. This example is for exposing the SSH service (port 22), and note the &lt;code&gt;secretKey&lt;/code&gt; field for the preshared key, and that the &lt;code&gt;remotePort&lt;/code&gt; field is removed here:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;secret_ssh&quot;
type = &quot;stcp&quot;
secretKey = &quot;abcdefg&quot;
localIP = &quot;127.0.0.1&quot;
localPort = 22
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Start another &lt;code&gt;frpc&lt;/code&gt; (typically on another machine C) with the following config to access the SSH service with a security key (&lt;code&gt;secretKey&lt;/code&gt; field):&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[visitors]]
name = &quot;secret_ssh_visitor&quot;
type = &quot;stcp&quot;
serverName = &quot;secret_ssh&quot;
secretKey = &quot;abcdefg&quot;
bindAddr = &quot;127.0.0.1&quot;
bindPort = 6000
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;On machine C, connect to SSH on machine B, using this command:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;ssh -oPort=6000 127.0.0.1&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;P2P Mode&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;xtcp&lt;/strong&gt; is designed to transmit large amounts of data directly between clients. A frps server is still needed, as P2P here only refers to the actual data transmission.&lt;/p&gt; 
&lt;p&gt;Note that it may not work with all types of NAT devices. You might want to fallback to stcp if xtcp doesn&#39;t work.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start &lt;code&gt;frpc&lt;/code&gt; on machine B, and expose the SSH port. Note that the &lt;code&gt;remotePort&lt;/code&gt; field is removed:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000
# set up a new stun server if the default one is not available.
# natHoleStunServer = &quot;xxx&quot;

[[proxies]]
name = &quot;p2p_ssh&quot;
type = &quot;xtcp&quot;
secretKey = &quot;abcdefg&quot;
localIP = &quot;127.0.0.1&quot;
localPort = 22
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Start another &lt;code&gt;frpc&lt;/code&gt; (typically on another machine C) with the configuration to connect to SSH using P2P mode:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000
# set up a new stun server if the default one is not available.
# natHoleStunServer = &quot;xxx&quot;

[[visitors]]
name = &quot;p2p_ssh_visitor&quot;
type = &quot;xtcp&quot;
serverName = &quot;p2p_ssh&quot;
secretKey = &quot;abcdefg&quot;
bindAddr = &quot;127.0.0.1&quot;
bindPort = 6000
# when automatic tunnel persistence is required, set it to true
keepTunnelOpen = false
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;On machine C, connect to SSH on machine B, using this command:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;code&gt;ssh -oPort=6000 127.0.0.1&lt;/code&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;h3&gt;Configuration Files&lt;/h3&gt; 
&lt;p&gt;Since v0.52.0, we support TOML, YAML, and JSON for configuration. Please note that INI is deprecated and will be removed in future releases. New features will only be available in TOML, YAML, or JSON. Users wanting these new features should switch their configuration format accordingly.&lt;/p&gt; 
&lt;p&gt;Read the full example configuration files to find out even more features not described here.&lt;/p&gt; 
&lt;p&gt;Examples use TOML format, but you can still use YAML or JSON.&lt;/p&gt; 
&lt;p&gt;These configuration files is for reference only. Please do not use this configuration directly to run the program as it may have various issues.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/conf/frps_full_example.toml&quot;&gt;Full configuration file for frps (Server)&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/conf/frpc_full_example.toml&quot;&gt;Full configuration file for frpc (Client)&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Using Environment Variables&lt;/h3&gt; 
&lt;p&gt;Environment variables can be referenced in the configuration file, using Go&#39;s standard format:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;{{ .Envs.FRP_SERVER_ADDR }}&quot;
serverPort = 7000

[[proxies]]
name = &quot;ssh&quot;
type = &quot;tcp&quot;
localIP = &quot;127.0.0.1&quot;
localPort = 22
remotePort = {{ .Envs.FRP_SSH_REMOTE_PORT }}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;With the config above, variables can be passed into &lt;code&gt;frpc&lt;/code&gt; program like this:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;export FRP_SERVER_ADDR=x.x.x.x
export FRP_SSH_REMOTE_PORT=6000
./frpc -c ./frpc.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;frpc&lt;/code&gt; will render configuration file template using OS environment variables. Remember to prefix your reference with &lt;code&gt;.Envs&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Split Configures Into Different Files&lt;/h3&gt; 
&lt;p&gt;You can split multiple proxy configs into different files and include them in the main file.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000
includes = [&quot;./confd/*.toml&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# ./confd/test.toml

[[proxies]]
name = &quot;ssh&quot;
type = &quot;tcp&quot;
localIP = &quot;127.0.0.1&quot;
localPort = 22
remotePort = 6000
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Server Dashboard&lt;/h3&gt; 
&lt;p&gt;Check frp&#39;s status and proxies&#39; statistics information by Dashboard.&lt;/p&gt; 
&lt;p&gt;Configure a port for dashboard to enable this feature:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# The default value is 127.0.0.1. Change it to 0.0.0.0 when you want to access it from a public network.
webServer.addr = &quot;0.0.0.0&quot;
webServer.port = 7500
# dashboard&#39;s username and password are both optional
webServer.user = &quot;admin&quot;
webServer.password = &quot;admin&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then visit &lt;code&gt;http://[serverAddr]:7500&lt;/code&gt; to see the dashboard, with username and password both being &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Additionally, you can use HTTPS port by using your domains wildcard or normal SSL certificate:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;webServer.port = 7500
# dashboard&#39;s username and password are both optional
webServer.user = &quot;admin&quot;
webServer.password = &quot;admin&quot;
webServer.tls.certFile = &quot;server.crt&quot;
webServer.tls.keyFile = &quot;server.key&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then visit &lt;code&gt;https://[serverAddr]:7500&lt;/code&gt; to see the dashboard in secure HTTPS connection, with username and password both being &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/dashboard.png&quot; alt=&quot;dashboard&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Client Admin UI&lt;/h3&gt; 
&lt;p&gt;The Client Admin UI helps you check and manage frpc&#39;s configuration and proxies.&lt;/p&gt; 
&lt;p&gt;Configure an address for admin UI to enable this feature:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;webServer.addr = &quot;127.0.0.1&quot;
webServer.port = 7400
webServer.user = &quot;admin&quot;
webServer.password = &quot;admin&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then visit &lt;code&gt;http://127.0.0.1:7400&lt;/code&gt; to see admin UI, with username and password both being &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt; 
&lt;h4&gt;Dynamic Proxy Management (Store)&lt;/h4&gt; 
&lt;p&gt;You can dynamically create, update, and delete proxies and visitors at runtime through the Web UI or API, without restarting frpc.&lt;/p&gt; 
&lt;p&gt;To enable this feature, configure &lt;code&gt;store.path&lt;/code&gt; to specify a file for persisting the configurations:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[store]
path = &quot;./db.json&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Proxies and visitors managed through the Store are saved to disk and automatically restored on frpc restart. They work alongside proxies defined in the configuration file — Store entries take precedence when names conflict.&lt;/p&gt; 
&lt;h3&gt;Monitor&lt;/h3&gt; 
&lt;p&gt;When web server is enabled, frps will save monitor data in cache for 7 days. It will be cleared after process restart.&lt;/p&gt; 
&lt;p&gt;Prometheus is also supported.&lt;/p&gt; 
&lt;h4&gt;Prometheus&lt;/h4&gt; 
&lt;p&gt;Enable dashboard first, then configure &lt;code&gt;enablePrometheus = true&lt;/code&gt; in &lt;code&gt;frps.toml&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;http://{dashboard_addr}/metrics&lt;/code&gt; will provide prometheus monitor data.&lt;/p&gt; 
&lt;h3&gt;Authenticating the Client&lt;/h3&gt; 
&lt;p&gt;There are 2 authentication methods to authenticate frpc with frps.&lt;/p&gt; 
&lt;p&gt;You can decide which one to use by configuring &lt;code&gt;auth.method&lt;/code&gt; in &lt;code&gt;frpc.toml&lt;/code&gt; and &lt;code&gt;frps.toml&lt;/code&gt;, the default one is token.&lt;/p&gt; 
&lt;p&gt;Configuring &lt;code&gt;auth.additionalScopes = [&quot;HeartBeats&quot;]&lt;/code&gt; will use the configured authentication method to add and validate authentication on every heartbeat between frpc and frps.&lt;/p&gt; 
&lt;p&gt;Configuring &lt;code&gt;auth.additionalScopes = [&quot;NewWorkConns&quot;]&lt;/code&gt; will do the same for every new work connection between frpc and frps.&lt;/p&gt; 
&lt;h4&gt;Token Authentication&lt;/h4&gt; 
&lt;p&gt;When specifying &lt;code&gt;auth.method = &quot;token&quot;&lt;/code&gt; in &lt;code&gt;frpc.toml&lt;/code&gt; and &lt;code&gt;frps.toml&lt;/code&gt; - token based authentication will be used.&lt;/p&gt; 
&lt;p&gt;Make sure to specify the same &lt;code&gt;auth.token&lt;/code&gt; in &lt;code&gt;frps.toml&lt;/code&gt; and &lt;code&gt;frpc.toml&lt;/code&gt; for frpc to pass frps validation&lt;/p&gt; 
&lt;h5&gt;Token Source&lt;/h5&gt; 
&lt;p&gt;frp supports reading authentication tokens from external sources using the &lt;code&gt;tokenSource&lt;/code&gt; configuration. Currently, file-based token source is supported.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;File-based token source:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
auth.method = &quot;token&quot;
auth.tokenSource.type = &quot;file&quot;
auth.tokenSource.file.path = &quot;/path/to/token/file&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The token will be read from the specified file at startup. This is useful for scenarios where tokens are managed by external systems or need to be kept separate from configuration files for security reasons.&lt;/p&gt; 
&lt;h4&gt;OIDC Authentication&lt;/h4&gt; 
&lt;p&gt;When specifying &lt;code&gt;auth.method = &quot;oidc&quot;&lt;/code&gt; in &lt;code&gt;frpc.toml&lt;/code&gt; and &lt;code&gt;frps.toml&lt;/code&gt; - OIDC based authentication will be used.&lt;/p&gt; 
&lt;p&gt;OIDC stands for OpenID Connect, and the flow used is called &lt;a href=&quot;https://tools.ietf.org/html/rfc6749#section-4.4&quot;&gt;Client Credentials Grant&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;To use this authentication type - configure &lt;code&gt;frpc.toml&lt;/code&gt; and &lt;code&gt;frps.toml&lt;/code&gt; as follows:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
auth.method = &quot;oidc&quot;
auth.oidc.issuer = &quot;https://example-oidc-issuer.com/&quot;
auth.oidc.audience = &quot;https://oidc-audience.com/.default&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
auth.method = &quot;oidc&quot;
auth.oidc.clientID = &quot;98692467-37de-409a-9fac-bb2585826f18&quot; # Replace with OIDC client ID
auth.oidc.clientSecret = &quot;oidc_secret&quot;
auth.oidc.audience = &quot;https://oidc-audience.com/.default&quot;
auth.oidc.tokenEndpointURL = &quot;https://example-oidc-endpoint.com/oauth2/v2.0/token&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Encryption and Compression&lt;/h3&gt; 
&lt;p&gt;The features are off by default. You can turn on encryption and/or compression:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;ssh&quot;
type = &quot;tcp&quot;
localPort = 22
remotePort = 6000
transport.useEncryption = true
transport.useCompression = true
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;TLS&lt;/h4&gt; 
&lt;p&gt;Since v0.50.0, the default value of &lt;code&gt;transport.tls.enable&lt;/code&gt; and &lt;code&gt;transport.tls.disableCustomTLSFirstByte&lt;/code&gt; has been changed to true, and tls is enabled by default.&lt;/p&gt; 
&lt;p&gt;For port multiplexing, frp sends a first byte &lt;code&gt;0x17&lt;/code&gt; to dial a TLS connection. This only takes effect when you set &lt;code&gt;transport.tls.disableCustomTLSFirstByte&lt;/code&gt; to false.&lt;/p&gt; 
&lt;p&gt;To &lt;strong&gt;enforce&lt;/strong&gt; &lt;code&gt;frps&lt;/code&gt; to only accept TLS connections - configure &lt;code&gt;transport.tls.force = true&lt;/code&gt; in &lt;code&gt;frps.toml&lt;/code&gt;. &lt;strong&gt;This is optional.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;code&gt;frpc&lt;/code&gt; TLS settings:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;transport.tls.enable = true
transport.tls.certFile = &quot;certificate.crt&quot;
transport.tls.keyFile = &quot;certificate.key&quot;
transport.tls.trustedCaFile = &quot;ca.crt&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;&lt;code&gt;frps&lt;/code&gt; TLS settings:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;transport.tls.force = true
transport.tls.certFile = &quot;certificate.crt&quot;
transport.tls.keyFile = &quot;certificate.key&quot;
transport.tls.trustedCaFile = &quot;ca.crt&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You will need &lt;strong&gt;a root CA cert&lt;/strong&gt; and &lt;strong&gt;at least one SSL/TLS certificate&lt;/strong&gt;. It &lt;strong&gt;can&lt;/strong&gt; be self-signed or regular (such as Let&#39;s Encrypt or another SSL/TLS certificate provider).&lt;/p&gt; 
&lt;p&gt;If you using &lt;code&gt;frp&lt;/code&gt; via IP address and not hostname, make sure to set the appropriate IP address in the Subject Alternative Name (SAN) area when generating SSL/TLS Certificates.&lt;/p&gt; 
&lt;p&gt;Given an example:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Prepare openssl config file. It exists at &lt;code&gt;/etc/pki/tls/openssl.cnf&lt;/code&gt; in Linux System and &lt;code&gt;/System/Library/OpenSSL/openssl.cnf&lt;/code&gt; in MacOS, and you can copy it to current path, like &lt;code&gt;cp /etc/pki/tls/openssl.cnf ./my-openssl.cnf&lt;/code&gt;. If not, you can build it by yourself, like:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code&gt;cat &amp;gt; my-openssl.cnf &amp;lt;&amp;lt; EOF
[ ca ]
default_ca = CA_default
[ CA_default ]
x509_extensions = usr_cert
[ req ]
default_bits        = 2048
default_md          = sha256
default_keyfile     = privkey.pem
distinguished_name  = req_distinguished_name
attributes          = req_attributes
x509_extensions     = v3_ca
string_mask         = utf8only
[ req_distinguished_name ]
[ req_attributes ]
[ usr_cert ]
basicConstraints       = CA:FALSE
nsComment              = &quot;OpenSSL Generated Certificate&quot;
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
[ v3_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = CA:true
EOF
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;build ca certificates:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code&gt;openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj &quot;/CN=example.ca.com&quot; -days 5000 -out ca.crt
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;build frps certificates:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code&gt;openssl genrsa -out server.key 2048

openssl req -new -sha256 -key server.key \
    -subj &quot;/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=server.com&quot; \
    -reqexts SAN \
    -config &amp;lt;(cat my-openssl.cnf &amp;lt;(printf &quot;\n[SAN]\nsubjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.server.com&quot;)) \
    -out server.csr

openssl x509 -req -days 365 -sha256 \
	-in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
	-extfile &amp;lt;(printf &quot;subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.server.com&quot;) \
	-out server.crt
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;build frpc certificates：&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code&gt;openssl genrsa -out client.key 2048
openssl req -new -sha256 -key client.key \
    -subj &quot;/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=client.com&quot; \
    -reqexts SAN \
    -config &amp;lt;(cat my-openssl.cnf &amp;lt;(printf &quot;\n[SAN]\nsubjectAltName=DNS:client.com,DNS:example.client.com&quot;)) \
    -out client.csr

openssl x509 -req -days 365 -sha256 \
    -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
	-extfile &amp;lt;(printf &quot;subjectAltName=DNS:client.com,DNS:example.client.com&quot;) \
	-out client.crt
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Hot-Reloading frpc configuration&lt;/h3&gt; 
&lt;p&gt;The &lt;code&gt;webServer&lt;/code&gt; fields are required for enabling HTTP API:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
webServer.addr = &quot;127.0.0.1&quot;
webServer.port = 7400
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then run command &lt;code&gt;frpc reload -c ./frpc.toml&lt;/code&gt; and wait for about 10 seconds to let &lt;code&gt;frpc&lt;/code&gt; create or update or remove proxies.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note that global client parameters won&#39;t be modified except &#39;start&#39;.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;start&lt;/code&gt; is a global allowlist evaluated after all sources are merged (config file/include/store). If &lt;code&gt;start&lt;/code&gt; is non-empty, any proxy or visitor not listed there will not be started, including entries created via Store API.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;start&lt;/code&gt; is kept mainly for compatibility and is generally not recommended for new configurations. Prefer per-proxy/per-visitor &lt;code&gt;enabled&lt;/code&gt;, and keep &lt;code&gt;start&lt;/code&gt; empty unless you explicitly want this global allowlist behavior.&lt;/p&gt; 
&lt;p&gt;You can run command &lt;code&gt;frpc verify -c ./frpc.toml&lt;/code&gt; before reloading to check if there are config errors.&lt;/p&gt; 
&lt;h3&gt;Get proxy status from client&lt;/h3&gt; 
&lt;p&gt;Use &lt;code&gt;frpc status -c ./frpc.toml&lt;/code&gt; to get status of all proxies. The &lt;code&gt;webServer&lt;/code&gt; fields are required for enabling HTTP API.&lt;/p&gt; 
&lt;h3&gt;Only allowing certain ports on the server&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;allowPorts&lt;/code&gt; in &lt;code&gt;frps.toml&lt;/code&gt; is used to avoid abuse of ports:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
allowPorts = [
  { start = 2000, end = 3000 },
  { single = 3001 },
  { single = 3003 },
  { start = 4000, end = 50000 }
]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Port Reuse&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;vhostHTTPPort&lt;/code&gt; and &lt;code&gt;vhostHTTPSPort&lt;/code&gt; in frps can use same port with &lt;code&gt;bindPort&lt;/code&gt;. frps will detect the connection&#39;s protocol and handle it correspondingly.&lt;/p&gt; 
&lt;p&gt;What you need to pay attention to is that if you want to configure &lt;code&gt;vhostHTTPSPort&lt;/code&gt; and &lt;code&gt;bindPort&lt;/code&gt; to the same port, you need to first set &lt;code&gt;transport.tls.disableCustomTLSFirstByte&lt;/code&gt; to false.&lt;/p&gt; 
&lt;p&gt;We would like to try to allow multiple proxies bind a same remote port with different protocols in the future.&lt;/p&gt; 
&lt;h3&gt;Bandwidth Limit&lt;/h3&gt; 
&lt;h4&gt;For Each Proxy&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;ssh&quot;
type = &quot;tcp&quot;
localPort = 22
remotePort = 6000
transport.bandwidthLimit = &quot;1MB&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Set &lt;code&gt;transport.bandwidthLimit&lt;/code&gt; in each proxy&#39;s configure to enable this feature. Supported units are &lt;code&gt;MB&lt;/code&gt; and &lt;code&gt;KB&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Set &lt;code&gt;transport.bandwidthLimitMode&lt;/code&gt; to &lt;code&gt;client&lt;/code&gt; or &lt;code&gt;server&lt;/code&gt; to limit bandwidth on the client or server side. Default is &lt;code&gt;client&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;TCP Stream Multiplexing&lt;/h3&gt; 
&lt;p&gt;frp supports tcp stream multiplexing since v0.10.0 like HTTP2 Multiplexing, in which case all logic connections to the same frpc are multiplexed into the same TCP connection.&lt;/p&gt; 
&lt;p&gt;You can disable this feature by modify &lt;code&gt;frps.toml&lt;/code&gt; and &lt;code&gt;frpc.toml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml and frpc.toml, must be same
transport.tcpMux = false
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Support KCP Protocol&lt;/h3&gt; 
&lt;p&gt;KCP is a fast and reliable protocol that can achieve the transmission effect of a reduction of the average latency by 30% to 40% and reduction of the maximum delay by a factor of three, at the cost of 10% to 20% more bandwidth wasted than TCP.&lt;/p&gt; 
&lt;p&gt;KCP mode uses UDP as the underlying transport. Using KCP in frp:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Enable KCP in frps:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
bindPort = 7000
# Specify a UDP port for KCP.
kcpBindPort = 7000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The &lt;code&gt;kcpBindPort&lt;/code&gt; number can be the same number as &lt;code&gt;bindPort&lt;/code&gt;, since &lt;code&gt;bindPort&lt;/code&gt; field specifies a TCP port.&lt;/p&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Configure &lt;code&gt;frpc.toml&lt;/code&gt; to use KCP to connect to frps:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
# Same as the &#39;kcpBindPort&#39; in frps.toml
serverPort = 7000
transport.protocol = &quot;kcp&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Support QUIC Protocol&lt;/h3&gt; 
&lt;p&gt;QUIC is a new multiplexed transport built on top of UDP.&lt;/p&gt; 
&lt;p&gt;Using QUIC in frp:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Enable QUIC in frps:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
bindPort = 7000
# Specify a UDP port for QUIC.
quicBindPort = 7000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The &lt;code&gt;quicBindPort&lt;/code&gt; number can be the same number as &lt;code&gt;bindPort&lt;/code&gt;, since &lt;code&gt;bindPort&lt;/code&gt; field specifies a TCP port.&lt;/p&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Configure &lt;code&gt;frpc.toml&lt;/code&gt; to use QUIC to connect to frps:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
# Same as the &#39;quicBindPort&#39; in frps.toml
serverPort = 7000
transport.protocol = &quot;quic&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Connection Pooling&lt;/h3&gt; 
&lt;p&gt;By default, frps creates a new frpc connection to the backend service upon a user request. With connection pooling, frps keeps a certain number of pre-established connections, reducing the time needed to establish a connection.&lt;/p&gt; 
&lt;p&gt;This feature is suitable for a large number of short connections.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Configure the limit of pool count each proxy can use in &lt;code&gt;frps.toml&lt;/code&gt;:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
transport.maxPoolCount = 5
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Enable and specify the number of connection pool:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
transport.poolCount = 1
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Load balancing&lt;/h3&gt; 
&lt;p&gt;Load balancing is supported by &lt;code&gt;group&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;This feature is only available for types &lt;code&gt;tcp&lt;/code&gt;, &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;tcpmux&lt;/code&gt; now.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;test1&quot;
type = &quot;tcp&quot;
localPort = 8080
remotePort = 80
loadBalancer.group = &quot;web&quot;
loadBalancer.groupKey = &quot;123&quot;

[[proxies]]
name = &quot;test2&quot;
type = &quot;tcp&quot;
localPort = 8081
remotePort = 80
loadBalancer.group = &quot;web&quot;
loadBalancer.groupKey = &quot;123&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;loadBalancer.groupKey&lt;/code&gt; is used for authentication.&lt;/p&gt; 
&lt;p&gt;Connections to port 80 will be dispatched to proxies in the same group randomly.&lt;/p&gt; 
&lt;p&gt;For type &lt;code&gt;tcp&lt;/code&gt;, &lt;code&gt;remotePort&lt;/code&gt; in the same group should be the same.&lt;/p&gt; 
&lt;p&gt;For type &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;customDomains&lt;/code&gt;, &lt;code&gt;subdomain&lt;/code&gt;, &lt;code&gt;locations&lt;/code&gt; should be the same.&lt;/p&gt; 
&lt;h3&gt;Service Health Check&lt;/h3&gt; 
&lt;p&gt;Health check feature can help you achieve high availability with load balancing.&lt;/p&gt; 
&lt;p&gt;Add &lt;code&gt;healthCheck.type = &quot;tcp&quot;&lt;/code&gt; or &lt;code&gt;healthCheck.type = &quot;http&quot;&lt;/code&gt; to enable health check.&lt;/p&gt; 
&lt;p&gt;With health check type &lt;strong&gt;tcp&lt;/strong&gt;, the service port will be pinged (TCPing):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;test1&quot;
type = &quot;tcp&quot;
localPort = 22
remotePort = 6000
# Enable TCP health check
healthCheck.type = &quot;tcp&quot;
# TCPing timeout seconds
healthCheck.timeoutSeconds = 3
# If health check failed 3 times in a row, the proxy will be removed from frps
healthCheck.maxFailed = 3
# A health check every 10 seconds
healthCheck.intervalSeconds = 10
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;With health check type &lt;strong&gt;http&lt;/strong&gt;, an HTTP request will be sent to the service and an HTTP 2xx OK response is expected:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web&quot;
type = &quot;http&quot;
localIP = &quot;127.0.0.1&quot;
localPort = 80
customDomains = [&quot;test.example.com&quot;]
# Enable HTTP health check
healthCheck.type = &quot;http&quot;
# frpc will send a GET request to &#39;/status&#39;
# and expect an HTTP 2xx OK response
healthCheck.path = &quot;/status&quot;
healthCheck.timeoutSeconds = 3
healthCheck.maxFailed = 3
healthCheck.intervalSeconds = 10
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Rewriting the HTTP Host Header&lt;/h3&gt; 
&lt;p&gt;By default frp does not modify the tunneled HTTP requests at all as it&#39;s a byte-for-byte copy.&lt;/p&gt; 
&lt;p&gt;However, speaking of web servers and HTTP requests, your web server might rely on the &lt;code&gt;Host&lt;/code&gt; HTTP header to determine the website to be accessed. frp can rewrite the &lt;code&gt;Host&lt;/code&gt; header when forwarding the HTTP requests, with the &lt;code&gt;hostHeaderRewrite&lt;/code&gt; field:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web&quot;
type = &quot;http&quot;
localPort = 80
customDomains = [&quot;test.example.com&quot;]
hostHeaderRewrite = &quot;dev.example.com&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The HTTP request will have the &lt;code&gt;Host&lt;/code&gt; header rewritten to &lt;code&gt;Host: dev.example.com&lt;/code&gt; when it reaches the actual web server, although the request from the browser probably has &lt;code&gt;Host: test.example.com&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Setting other HTTP Headers&lt;/h3&gt; 
&lt;p&gt;Similar to &lt;code&gt;Host&lt;/code&gt;, You can override other HTTP request and response headers with proxy type &lt;code&gt;http&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web&quot;
type = &quot;http&quot;
localPort = 80
customDomains = [&quot;test.example.com&quot;]
hostHeaderRewrite = &quot;dev.example.com&quot;
requestHeaders.set.x-from-where = &quot;frp&quot;
responseHeaders.set.foo = &quot;bar&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;In this example, it will set header &lt;code&gt;x-from-where: frp&lt;/code&gt; in the HTTP request and &lt;code&gt;foo: bar&lt;/code&gt; in the HTTP response.&lt;/p&gt; 
&lt;h3&gt;Get Real IP&lt;/h3&gt; 
&lt;h4&gt;HTTP X-Forwarded-For&lt;/h4&gt; 
&lt;p&gt;This feature is for &lt;code&gt;http&lt;/code&gt; proxies or proxies with the &lt;code&gt;https2http&lt;/code&gt; and &lt;code&gt;https2https&lt;/code&gt; plugins enabled.&lt;/p&gt; 
&lt;p&gt;You can get user&#39;s real IP from HTTP request headers &lt;code&gt;X-Forwarded-For&lt;/code&gt;.&lt;/p&gt; 
&lt;h4&gt;Proxy Protocol&lt;/h4&gt; 
&lt;p&gt;frp supports Proxy Protocol to send user&#39;s real IP to local services.&lt;/p&gt; 
&lt;p&gt;Here is an example for https service:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web&quot;
type = &quot;https&quot;
localPort = 443
customDomains = [&quot;test.example.com&quot;]

# now v1 and v2 are supported
transport.proxyProtocolVersion = &quot;v2&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can enable Proxy Protocol support in nginx to expose user&#39;s real IP in HTTP header &lt;code&gt;X-Real-IP&lt;/code&gt;, and then read &lt;code&gt;X-Real-IP&lt;/code&gt; header in your web service for the real IP.&lt;/p&gt; 
&lt;h3&gt;Require HTTP Basic Auth (Password) for Web Services&lt;/h3&gt; 
&lt;p&gt;Anyone who can guess your tunnel URL can access your local web server unless you protect it with a password.&lt;/p&gt; 
&lt;p&gt;This enforces HTTP Basic Auth on all requests with the username and password specified in frpc&#39;s configure file.&lt;/p&gt; 
&lt;p&gt;It can only be enabled when proxy type is http.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web&quot;
type = &quot;http&quot;
localPort = 80
customDomains = [&quot;test.example.com&quot;]
httpUser = &quot;abc&quot;
httpPassword = &quot;abc&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Visit &lt;code&gt;http://test.example.com&lt;/code&gt; in the browser and now you are prompted to enter the username and password.&lt;/p&gt; 
&lt;h3&gt;Custom Subdomain Names&lt;/h3&gt; 
&lt;p&gt;It is convenient to use &lt;code&gt;subdomain&lt;/code&gt; configure for http and https types when many people share one frps server.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
subDomainHost = &quot;frps.com&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Resolve &lt;code&gt;*.frps.com&lt;/code&gt; to the frps server&#39;s IP. This is usually called a Wildcard DNS record.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web&quot;
type = &quot;http&quot;
localPort = 80
subdomain = &quot;test&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Now you can visit your web service on &lt;code&gt;test.frps.com&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Note that if &lt;code&gt;subdomainHost&lt;/code&gt; is not empty, &lt;code&gt;customDomains&lt;/code&gt; should not be the subdomain of &lt;code&gt;subdomainHost&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;URL Routing&lt;/h3&gt; 
&lt;p&gt;frp supports forwarding HTTP requests to different backend web services by url routing.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;locations&lt;/code&gt; specifies the prefix of URL used for routing. frps first searches for the most specific prefix location given by literal strings regardless of the listed order.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;web01&quot;
type = &quot;http&quot;
localPort = 80
customDomains = [&quot;web.example.com&quot;]
locations = [&quot;/&quot;]

[[proxies]]
name = &quot;web02&quot;
type = &quot;http&quot;
localPort = 81
customDomains = [&quot;web.example.com&quot;]
locations = [&quot;/news&quot;, &quot;/about&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;HTTP requests with URL prefix &lt;code&gt;/news&lt;/code&gt; or &lt;code&gt;/about&lt;/code&gt; will be forwarded to &lt;strong&gt;web02&lt;/strong&gt; and other requests to &lt;strong&gt;web01&lt;/strong&gt;.&lt;/p&gt; 
&lt;h3&gt;TCP Port Multiplexing&lt;/h3&gt; 
&lt;p&gt;frp supports receiving TCP sockets directed to different proxies on a single port on frps, similar to &lt;code&gt;vhostHTTPPort&lt;/code&gt; and &lt;code&gt;vhostHTTPSPort&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The only supported TCP port multiplexing method available at the moment is &lt;code&gt;httpconnect&lt;/code&gt; - HTTP CONNECT tunnel.&lt;/p&gt; 
&lt;p&gt;When setting &lt;code&gt;tcpmuxHTTPConnectPort&lt;/code&gt; to anything other than 0 in frps, frps will listen on this port for HTTP CONNECT requests.&lt;/p&gt; 
&lt;p&gt;The host of the HTTP CONNECT request will be used to match the proxy in frps. Proxy hosts can be configured in frpc by configuring &lt;code&gt;customDomains&lt;/code&gt; and / or &lt;code&gt;subdomain&lt;/code&gt; under &lt;code&gt;tcpmux&lt;/code&gt; proxies, when &lt;code&gt;multiplexer = &quot;httpconnect&quot;&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
bindPort = 7000
tcpmuxHTTPConnectPort = 1337
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000

[[proxies]]
name = &quot;proxy1&quot;
type = &quot;tcpmux&quot;
multiplexer = &quot;httpconnect&quot;
customDomains = [&quot;test1&quot;]
localPort = 80

[[proxies]]
name = &quot;proxy2&quot;
type = &quot;tcpmux&quot;
multiplexer = &quot;httpconnect&quot;
customDomains = [&quot;test2&quot;]
localPort = 8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;In the above configuration - frps can be contacted on port 1337 with a HTTP CONNECT header such as:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;CONNECT test1 HTTP/1.1\r\n\r\n
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;and the connection will be routed to &lt;code&gt;proxy1&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Connecting to frps via PROXY&lt;/h3&gt; 
&lt;p&gt;frpc can connect to frps through proxy if you set OS environment variable &lt;code&gt;HTTP_PROXY&lt;/code&gt;, or if &lt;code&gt;transport.proxyURL&lt;/code&gt; is set in frpc.toml file.&lt;/p&gt; 
&lt;p&gt;It only works when protocol is tcp.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml
serverAddr = &quot;x.x.x.x&quot;
serverPort = 7000
transport.proxyURL = &quot;http://user:pwd@192.168.1.128:8080&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Port range mapping&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;Added in v0.56.0&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;We can use the range syntax of Go template combined with the built-in &lt;code&gt;parseNumberRangePair&lt;/code&gt; function to achieve port range mapping.&lt;/p&gt; 
&lt;p&gt;The following example, when run, will create 8 proxies named &lt;code&gt;test-6000, test-6001 ... test-6007&lt;/code&gt;, each mapping the remote port to the local port.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;{{- range $_, $v := parseNumberRangePair &quot;6000-6006,6007&quot; &quot;6000-6006,6007&quot; }}
[[proxies]]
name = &quot;tcp-{{ $v.First }}&quot;
type = &quot;tcp&quot;
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Client Plugins&lt;/h3&gt; 
&lt;p&gt;frpc only forwards requests to local TCP or UDP ports by default.&lt;/p&gt; 
&lt;p&gt;Plugins are used for providing rich features. There are built-in plugins such as &lt;code&gt;unix_domain_socket&lt;/code&gt;, &lt;code&gt;http_proxy&lt;/code&gt;, &lt;code&gt;socks5&lt;/code&gt;, &lt;code&gt;static_file&lt;/code&gt;, &lt;code&gt;http2https&lt;/code&gt;, &lt;code&gt;https2http&lt;/code&gt;, &lt;code&gt;https2https&lt;/code&gt; and you can see &lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/#example-usage&quot;&gt;example usage&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Using plugin &lt;strong&gt;http_proxy&lt;/strong&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frpc.toml

[[proxies]]
name = &quot;http_proxy&quot;
type = &quot;tcp&quot;
remotePort = 6000
[proxies.plugin]
type = &quot;http_proxy&quot;
httpUser = &quot;abc&quot;
httpPassword = &quot;abc&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;httpUser&lt;/code&gt; and &lt;code&gt;httpPassword&lt;/code&gt; are configuration parameters used in &lt;code&gt;http_proxy&lt;/code&gt; plugin.&lt;/p&gt; 
&lt;h3&gt;Server Manage Plugins&lt;/h3&gt; 
&lt;p&gt;Read the &lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/server_plugin.md&quot;&gt;document&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Find more plugins in &lt;a href=&quot;https://github.com/gofrp/plugin&quot;&gt;gofrp/plugin&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;SSH Tunnel Gateway&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;added in v0.53.0&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;frp supports listening to an SSH port on the frps side and achieves TCP protocol proxying through the SSH -R protocol, without relying on frpc.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;# frps.toml
sshTunnelGateway.bindPort = 2200
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;When running &lt;code&gt;./frps -c frps.toml&lt;/code&gt;, a private key file named &lt;code&gt;.autogen_ssh_key&lt;/code&gt; will be automatically created in the current working directory. This generated private key file will be used by the SSH server in frps.&lt;/p&gt; 
&lt;p&gt;Executing the command&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh -R :80:127.0.0.1:8080 v0@{frp address} -p 2200 tcp --proxy_name &quot;test-tcp&quot; --remote_port 9090
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;sets up a proxy on frps that forwards the local 8080 service to the port 9090.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;frp (via SSH) (Ctrl+C to quit)

User:
ProxyName: test-tcp
Type: tcp
RemoteAddress: :9090
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This is equivalent to:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;frpc tcp --proxy_name &quot;test-tcp&quot; --local_ip 127.0.0.1 --local_port 8080 --remote_port 9090
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Please refer to this &lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/ssh_tunnel_gateway.md&quot;&gt;document&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h3&gt;Virtual Network (VirtualNet)&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;Alpha feature added in v0.62.0&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;The VirtualNet feature enables frp to create and manage virtual network connections between clients and visitors through a TUN interface. This allows for IP-level routing between machines, extending frp beyond simple port forwarding to support full network connectivity.&lt;/p&gt; 
&lt;p&gt;For detailed information about configuration and usage, please refer to the &lt;a href=&quot;https://raw.githubusercontent.com/fatedier/frp/dev/doc/virtual_net.md&quot;&gt;VirtualNet documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Feature Gates&lt;/h2&gt; 
&lt;p&gt;frp supports feature gates to enable or disable experimental features. This allows users to try out new features before they&#39;re considered stable.&lt;/p&gt; 
&lt;h3&gt;Available Feature Gates&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Name&lt;/th&gt; 
   &lt;th&gt;Stage&lt;/th&gt; 
   &lt;th&gt;Default&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;VirtualNet&lt;/td&gt; 
   &lt;td&gt;ALPHA&lt;/td&gt; 
   &lt;td&gt;false&lt;/td&gt; 
   &lt;td&gt;Virtual network capabilities for frp&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Enabling Feature Gates&lt;/h3&gt; 
&lt;p&gt;To enable an experimental feature, add the feature gate to your configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;featureGates = { VirtualNet = true }
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Feature Lifecycle&lt;/h3&gt; 
&lt;p&gt;Features typically go through three stages:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;ALPHA&lt;/strong&gt;: Disabled by default, may be unstable&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;BETA&lt;/strong&gt;: May be enabled by default, more stable but still evolving&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;GA (Generally Available)&lt;/strong&gt;: Enabled by default, ready for production use&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Related Projects&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gofrp/plugin&quot;&gt;gofrp/plugin&lt;/a&gt; - A repository for frp plugins that contains a variety of plugins implemented based on the frp extension mechanism, meeting the customization needs of different scenarios.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gofrp/tiny-frpc&quot;&gt;gofrp/tiny-frpc&lt;/a&gt; - A lightweight version of the frp client (around 3.5MB at minimum) implemented using the ssh protocol, supporting some of the most commonly used features, suitable for devices with limited resources.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Interested in getting involved? We would like to help you!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Take a look at our &lt;a href=&quot;https://github.com/fatedier/frp/issues&quot;&gt;issues list&lt;/a&gt; and consider sending a Pull Request to &lt;strong&gt;dev branch&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;If you want to add a new feature, please create an issue first to describe the new feature, as well as the implementation approach. Once a proposal is accepted, create an implementation of the new features and submit it as a pull request.&lt;/li&gt; 
 &lt;li&gt;Sorry for my poor English. Improvements for this document are welcome, even some typo fixes.&lt;/li&gt; 
 &lt;li&gt;If you have great ideas, send an email to &lt;a href=&quot;mailto:fatedier@gmail.com&quot;&gt;fatedier@gmail.com&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Note: We prefer you to give your advise in &lt;a href=&quot;https://github.com/fatedier/frp/issues&quot;&gt;issues&lt;/a&gt;, so others with a same question can search it quickly and we don&#39;t need to answer them repeatedly.&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Donation&lt;/h2&gt; 
&lt;p&gt;If frp helps you a lot, you can support us by:&lt;/p&gt; 
&lt;h3&gt;GitHub Sponsors&lt;/h3&gt; 
&lt;p&gt;Support us by &lt;a href=&quot;https://github.com/sponsors/fatedier&quot;&gt;Github Sponsors&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;You can have your company&#39;s logo placed on README file of this project.&lt;/p&gt; 
&lt;h3&gt;PayPal&lt;/h3&gt; 
&lt;p&gt;Donate money by &lt;a href=&quot;https://www.paypal.me/fatedier&quot;&gt;PayPal&lt;/a&gt; to my account &lt;strong&gt;&lt;a href=&quot;mailto:fatedier@gmail.com&quot;&gt;fatedier@gmail.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ollama/ollama</title>
      <link>https://github.com/ollama/ollama</link>
      <description>&lt;p&gt;Get up and running with Kimi-K2.6, GLM-5.2, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://ollama.com&quot;&gt; &lt;img src=&quot;https://github.com/ollama/ollama/assets/3325447/0d0b44e2-8f4a-4e99-9b52-a5c1c741c8f7&quot; alt=&quot;ollama&quot; width=&quot;200&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;h1&gt;Ollama&lt;/h1&gt; 
&lt;p&gt;Start building with open models.&lt;/p&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;h3&gt;macOS&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;curl -fsSL https://ollama.com/install.sh | sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;or &lt;a href=&quot;https://ollama.com/download/Ollama.dmg&quot;&gt;download manually&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Windows&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;irm https://ollama.com/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;or &lt;a href=&quot;https://ollama.com/download/OllamaSetup.exe&quot;&gt;download manually&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Linux&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;curl -fsSL https://ollama.com/install.sh | sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.ollama.com/linux#manual-install&quot;&gt;Manual install instructions&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Docker&lt;/h3&gt; 
&lt;p&gt;The official &lt;a href=&quot;https://hub.docker.com/r/ollama/ollama&quot;&gt;Ollama Docker image&lt;/a&gt; &lt;code&gt;ollama/ollama&lt;/code&gt; is available on Docker Hub.&lt;/p&gt; 
&lt;h3&gt;Libraries&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ollama/ollama-python&quot;&gt;ollama-python&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ollama/ollama-js&quot;&gt;ollama-js&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Community&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/ollama&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://x.com/ollama&quot;&gt;𝕏 (Twitter)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://reddit.com/r/ollama&quot;&gt;Reddit&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Get started&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;ollama
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You&#39;ll be prompted to run a model or connect Ollama to your existing agents or applications such as &lt;code&gt;Claude Code&lt;/code&gt;, &lt;code&gt;OpenClaw&lt;/code&gt;, &lt;code&gt;OpenCode&lt;/code&gt; , &lt;code&gt;Codex&lt;/code&gt;, &lt;code&gt;Copilot&lt;/code&gt;, and more.&lt;/p&gt; 
&lt;h3&gt;Coding&lt;/h3&gt; 
&lt;p&gt;To launch a specific integration:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ollama launch claude
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Supported integrations include &lt;a href=&quot;https://docs.ollama.com/integrations/claude-code&quot;&gt;Claude Code&lt;/a&gt;, &lt;a href=&quot;https://docs.ollama.com/integrations/codex&quot;&gt;Codex&lt;/a&gt;, &lt;a href=&quot;https://docs.ollama.com/integrations/copilot-cli&quot;&gt;Copilot CLI&lt;/a&gt;, &lt;a href=&quot;https://docs.ollama.com/integrations/deepseek-harness&quot;&gt;DeepSeek Harness&lt;/a&gt;, &lt;a href=&quot;https://docs.ollama.com/integrations/droid&quot;&gt;Droid&lt;/a&gt;, and &lt;a href=&quot;https://docs.ollama.com/integrations/opencode&quot;&gt;OpenCode&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;AI assistant&lt;/h3&gt; 
&lt;p&gt;Use &lt;a href=&quot;https://docs.ollama.com/integrations/openclaw&quot;&gt;OpenClaw&lt;/a&gt; to turn Ollama into a personal AI assistant across WhatsApp, Telegram, Slack, Discord, and more:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ollama launch openclaw
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Chat with a model&lt;/h3&gt; 
&lt;p&gt;Run and chat with &lt;a href=&quot;https://ollama.com/library/gemma4&quot;&gt;Gemma 4&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ollama run gemma4
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://ollama.com/library&quot;&gt;ollama.com/library&lt;/a&gt; for the full list.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://docs.ollama.com/quickstart&quot;&gt;quickstart guide&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;h2&gt;REST API&lt;/h2&gt; 
&lt;p&gt;Ollama has a REST API for running and managing models.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;curl http://localhost:11434/api/chat -d &#39;{
  &quot;model&quot;: &quot;gemma4&quot;,
  &quot;messages&quot;: [{
    &quot;role&quot;: &quot;user&quot;,
    &quot;content&quot;: &quot;Why is the sky blue?&quot;
  }],
  &quot;stream&quot;: false
}&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://docs.ollama.com/api&quot;&gt;API documentation&lt;/a&gt; for all endpoints.&lt;/p&gt; 
&lt;h3&gt;Python&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;pip install ollama
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from ollama import chat

response = chat(model=&#39;gemma4&#39;, messages=[
  {
    &#39;role&#39;: &#39;user&#39;,
    &#39;content&#39;: &#39;Why is the sky blue?&#39;,
  },
])
print(response.message.content)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;JavaScript&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;npm i ollama
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;import ollama from &quot;ollama&quot;;

const response = await ollama.chat({
  model: &quot;gemma4&quot;,
  messages: [{ role: &quot;user&quot;, content: &quot;Why is the sky blue?&quot; }],
});
console.log(response.message.content);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Supported backends&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp&quot;&gt;llama.cpp&lt;/a&gt; project founded by Georgi Gerganov.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.ollama.com/cli&quot;&gt;CLI reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.ollama.com/api&quot;&gt;REST API reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.ollama.com/import&quot;&gt;Importing models&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.ollama.com/modelfile&quot;&gt;Modelfile reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ollama/ollama/raw/main/docs/development.md&quot;&gt;Building from source&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Community Integrations&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Want to add your project? Open a pull request.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Chat Interfaces&lt;/h3&gt; 
&lt;h4&gt;Web&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/open-webui/open-webui&quot;&gt;Open WebUI&lt;/a&gt; - Extensible, self-hosted AI interface&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/onyx-dot-app/onyx&quot;&gt;Onyx&lt;/a&gt; - Connected AI workspace&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/danny-avila/LibreChat&quot;&gt;LibreChat&lt;/a&gt; - Enhanced ChatGPT clone with multi-provider support&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lobehub/lobe-chat&quot;&gt;Lobe Chat&lt;/a&gt; - Modern chat framework with plugin ecosystem (&lt;a href=&quot;https://lobehub.com/docs/self-hosting/examples/ollama&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web&quot;&gt;NextChat&lt;/a&gt; - Cross-platform ChatGPT UI (&lt;a href=&quot;https://docs.nextchat.dev/models/ollama&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ItzCrazyKns/Perplexica&quot;&gt;Perplexica&lt;/a&gt; - AI-powered search engine, open-source Perplexity alternative&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/enricoros/big-AGI&quot;&gt;big-AGI&lt;/a&gt; - AI suite for professionals&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ParisNeo/lollms-webui&quot;&gt;Lollms WebUI&lt;/a&gt; - Multi-model web interface&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sugarforever/chat-ollama&quot;&gt;ChatOllama&lt;/a&gt; - Chatbot with knowledge bases&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bionic-gpt/bionic-gpt&quot;&gt;Bionic GPT&lt;/a&gt; - On-premise AI platform&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ivanfioravanti/chatbot-ollama&quot;&gt;Chatbot UI&lt;/a&gt; - ChatGPT-style web interface&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/fmaclen/hollama&quot;&gt;Hollama&lt;/a&gt; - Minimal web interface&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Bin-Huang/Chatbox&quot;&gt;Chatbox&lt;/a&gt; - Desktop and web AI client&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/swuecho/chat&quot;&gt;chat&lt;/a&gt; - Chat web app for teams&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/datvodinh/rag-chatbot.git&quot;&gt;Ollama RAG Chatbot&lt;/a&gt; - Chat with multiple PDFs using RAG&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/chyok/ollama-gui&quot;&gt;Tkinter-based client&lt;/a&gt; - Python desktop client&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Desktop&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/langgenius/dify&quot;&gt;Dify.AI&lt;/a&gt; - LLM app development platform&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Mintplex-Labs/anything-llm&quot;&gt;AnythingLLM&lt;/a&gt; - All-in-one AI app for Mac, Windows, and Linux&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Mobile-Artificial-Intelligence/maid&quot;&gt;Maid&lt;/a&gt; - Cross-platform mobile and desktop client&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nbonamy/witsy&quot;&gt;Witsy&lt;/a&gt; - AI desktop app for Mac, Windows, and Linux&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kangfenmao/cherry-studio&quot;&gt;Cherry Studio&lt;/a&gt; - Multi-provider desktop client&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/JHubi1/ollama-app&quot;&gt;Ollama App&lt;/a&gt; - Multi-platform client for desktop and mobile&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/szczyglis-dev/py-gpt&quot;&gt;PyGPT&lt;/a&gt; - AI desktop assistant for Linux, Windows, and Mac&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Jeffser/Alpaca&quot;&gt;Alpaca&lt;/a&gt; - GTK4 client for Linux and macOS&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aws-samples/swift-chat&quot;&gt;SwiftChat&lt;/a&gt; - Cross-platform including iOS, Android, and Apple Vision Pro&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AugustDev/enchanted&quot;&gt;Enchanted&lt;/a&gt; - Native macOS and iOS client&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/josStorer/RWKV-Runner&quot;&gt;RWKV-Runner&lt;/a&gt; - Multi-model desktop runner&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dezoito/ollama-grid-search&quot;&gt;Ollama Grid Search&lt;/a&gt; - Evaluate and compare models&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Renset/macai&quot;&gt;macai&lt;/a&gt; - macOS client for Ollama and ChatGPT&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/MindWorkAI/AI-Studio&quot;&gt;AI Studio&lt;/a&gt; - Multi-provider desktop IDE&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ibrahimcetin/reins&quot;&gt;Reins&lt;/a&gt; - Parameter tuning and reasoning model support&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/1runeberg/confichat&quot;&gt;ConfiChat&lt;/a&gt; - Privacy-focused with optional encryption&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kartikm7/llocal&quot;&gt;LLocal.in&lt;/a&gt; - Electron desktop client&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mindmac.app&quot;&gt;MindMac&lt;/a&gt; - AI chat client for Mac&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://msty.app&quot;&gt;Msty&lt;/a&gt; - Multi-model desktop client&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://boltai.com&quot;&gt;BoltAI for Mac&lt;/a&gt; - AI chat client for Mac&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://intellibar.app/&quot;&gt;IntelliBar&lt;/a&gt; - AI-powered assistant for macOS&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.kerlig.com/&quot;&gt;Kerlig AI&lt;/a&gt; - AI writing assistant for macOS&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://hillnote.com&quot;&gt;Hillnote&lt;/a&gt; - Markdown-first AI workspace&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.perfectmemory.ai/&quot;&gt;Perfect Memory AI&lt;/a&gt; - Productivity AI personalized by screen and meeting history&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Mobile&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sunshine0523/OllamaServer&quot;&gt;Ollama Android Chat&lt;/a&gt; - One-click Ollama on Android&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;SwiftChat, Enchanted, Maid, Ollama App, Reins, and ConfiChat listed above also support mobile platforms.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Code Editors &amp;amp; Development&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cline/cline&quot;&gt;Cline&lt;/a&gt; - VS Code extension for multi-file/whole-repo coding&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/continuedev/continue&quot;&gt;Continue&lt;/a&gt; - Open-source AI code assistant for any IDE&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/voideditor/void&quot;&gt;Void&lt;/a&gt; - Open source AI code editor, Cursor alternative&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/logancyang/obsidian-copilot&quot;&gt;Copilot for Obsidian&lt;/a&gt; - AI assistant for Obsidian&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rjmacarthy/twinny&quot;&gt;twinny&lt;/a&gt; - Copilot and Copilot chat alternative&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/karthink/gptel&quot;&gt;gptel Emacs client&lt;/a&gt; - LLM client for Emacs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bernardo-bruning/ollama-copilot&quot;&gt;Ollama Copilot&lt;/a&gt; - Use Ollama as GitHub Copilot&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pfrankov/obsidian-local-gpt&quot;&gt;Obsidian Local GPT&lt;/a&gt; - Local AI for Obsidian&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/s-kostyaev/ellama&quot;&gt;Ellama Emacs client&lt;/a&gt; - LLM tool for Emacs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xyproto/orbiton&quot;&gt;orbiton&lt;/a&gt; - Config-free text editor with Ollama tab completion&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yaroslavyaroslav/OpenAI-sublime-text&quot;&gt;AI ST Completion&lt;/a&gt; - Sublime Text 4 AI assistant&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vinhnx/vtcode&quot;&gt;VT Code&lt;/a&gt; - Rust-based terminal coding agent with Tree-sitter&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Palm1r/QodeAssist&quot;&gt;QodeAssist&lt;/a&gt; - AI coding assistant for Qt Creator&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://aka.ms/ai-tooklit/ollama-docs&quot;&gt;AI Toolkit for VS Code&lt;/a&gt; - Microsoft-official VS Code extension&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.openinterpreter.com/language-model-setup/local-models/ollama&quot;&gt;Open Interpreter&lt;/a&gt; - Natural language interface for computers&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Libraries &amp;amp; SDKs&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/BerriAI/litellm&quot;&gt;LiteLLM&lt;/a&gt; - Unified API for 100+ LLM providers&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/semantic-kernel/tree/main/python/semantic_kernel/connectors/ai/ollama&quot;&gt;Semantic Kernel&lt;/a&gt; - Microsoft AI orchestration SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/langchain4j/langchain4j&quot;&gt;LangChain4j&lt;/a&gt; - Java LangChain (&lt;a href=&quot;https://github.com/langchain4j/langchain4j-examples/tree/main/ollama-examples/src/main/java&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tmc/langchaingo/&quot;&gt;LangChainGo&lt;/a&gt; - Go LangChain (&lt;a href=&quot;https://github.com/tmc/langchaingo/tree/main/examples/ollama-completion-example&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-ai&quot;&gt;Spring AI&lt;/a&gt; - Spring framework AI support (&lt;a href=&quot;https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://python.langchain.com/docs/integrations/chat/ollama/&quot;&gt;LangChain&lt;/a&gt; and &lt;a href=&quot;https://js.langchain.com/docs/integrations/chat/ollama/&quot;&gt;LangChain.js&lt;/a&gt; with &lt;a href=&quot;https://js.langchain.com/docs/tutorials/local_rag/&quot;&gt;example&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/crmne/ruby_llm&quot;&gt;Ollama for Ruby&lt;/a&gt; - Ruby LLM library&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mozilla-ai/any-llm&quot;&gt;any-llm&lt;/a&gt; - Unified LLM interface by Mozilla&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/awaescher/OllamaSharp&quot;&gt;OllamaSharp for .NET&lt;/a&gt; - .NET SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Abraxas-365/langchain-rust&quot;&gt;LangChainRust&lt;/a&gt; - Rust LangChain (&lt;a href=&quot;https://github.com/Abraxas-365/langchain-rust/raw/main/examples/llm_ollama.rs&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/agents-flex/agents-flex&quot;&gt;Agents-Flex for Java&lt;/a&gt; - Java agent framework (&lt;a href=&quot;https://github.com/agents-flex/agents-flex/tree/main/agents-flex-llm/agents-flex-llm-ollama/src/test/java/com/agentsflex/llm/ollama&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/brainlid/langchain&quot;&gt;Elixir LangChain&lt;/a&gt; - Elixir LangChain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pepperoni21/ollama-rs&quot;&gt;Ollama-rs for Rust&lt;/a&gt; - Rust SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tryAGI/LangChain&quot;&gt;LangChain for .NET&lt;/a&gt; - .NET LangChain (&lt;a href=&quot;https://github.com/tryAGI/LangChain/raw/main/examples/LangChain.Samples.OpenAI/Program.cs&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/philippgille/chromem-go&quot;&gt;chromem-go&lt;/a&gt; - Go vector database with Ollama embeddings (&lt;a href=&quot;https://github.com/philippgille/chromem-go/tree/v0.5.0/examples/rag-wikipedia-ollama&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/davidmigloz/langchain_dart&quot;&gt;LangChainDart&lt;/a&gt; - Dart LangChain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lofcz/llmtornado&quot;&gt;LlmTornado&lt;/a&gt; - Unified C# interface for multiple inference APIs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ollama4j/ollama4j&quot;&gt;Ollama4j for Java&lt;/a&gt; - Java SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cloudstudio/ollama-laravel&quot;&gt;Ollama for Laravel&lt;/a&gt; - Laravel integration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mattt/ollama-swift&quot;&gt;Ollama for Swift&lt;/a&gt; - Swift SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.llamaindex.ai/en/stable/examples/llm/ollama/&quot;&gt;LlamaIndex&lt;/a&gt; and &lt;a href=&quot;https://ts.llamaindex.ai/modules/llms/available_llms/ollama&quot;&gt;LlamaIndexTS&lt;/a&gt; - Data framework for LLM apps&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/deepset-ai/haystack-integrations/raw/main/integrations/ollama.md&quot;&gt;Haystack&lt;/a&gt; - AI pipeline framework&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://firebase.google.com/docs/genkit/plugins/ollama&quot;&gt;Firebase Genkit&lt;/a&gt; - Google AI framework&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jmont-dev/ollama-hpp&quot;&gt;Ollama-hpp for C++&lt;/a&gt; - C++ SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/svilupp/PromptingTools.jl&quot;&gt;PromptingTools.jl&lt;/a&gt; - Julia LLM toolkit (&lt;a href=&quot;https://svilupp.github.io/PromptingTools.jl/dev/examples/working_with_ollama&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/JBGruber/rollama&quot;&gt;Ollama for R - rollama&lt;/a&gt; - R SDK&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://portkey.ai/docs/welcome/integration-guides/ollama&quot;&gt;Portkey&lt;/a&gt; - AI gateway&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://testcontainers.com/modules/ollama/&quot;&gt;Testcontainers&lt;/a&gt; - Container-based testing&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/theodo-group/LLPhant?tab=readme-ov-file#ollama&quot;&gt;LLPhant&lt;/a&gt; - PHP AI framework&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Frameworks &amp;amp; Agents&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Significant-Gravitas/AutoGPT/raw/master/docs/content/platform/ollama.md&quot;&gt;AutoGPT&lt;/a&gt; - Autonomous AI agent platform&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/crewAIInc/crewAI&quot;&gt;crewAI&lt;/a&gt; - Multi-agent orchestration framework&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/strands-agents/sdk-python&quot;&gt;Strands Agents&lt;/a&gt; - Model-driven agent building by AWS&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cheshire-cat-ai/core&quot;&gt;Cheshire Cat&lt;/a&gt; - AI assistant framework&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mozilla-ai/any-agent&quot;&gt;any-agent&lt;/a&gt; - Unified agent framework interface by Mozilla&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/stakpak/agent&quot;&gt;Stakpak&lt;/a&gt; - Open source DevOps agent&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hexastack/hexabot&quot;&gt;Hexabot&lt;/a&gt; - Conversational AI builder&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cognizant-ai-lab/neuro-san-studio&quot;&gt;Neuro SAN&lt;/a&gt; - Multi-agent orchestration (&lt;a href=&quot;https://github.com/cognizant-ai-lab/neuro-san-studio/raw/main/docs/user_guide.md#ollama&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;RAG &amp;amp; Knowledge Bases&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/infiniflow/ragflow&quot;&gt;RAGFlow&lt;/a&gt; - RAG engine based on deep document understanding&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/SciPhi-AI/R2R&quot;&gt;R2R&lt;/a&gt; - Open-source RAG engine&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/1Panel-dev/MaxKB/&quot;&gt;MaxKB&lt;/a&gt; - Ready-to-use RAG chatbot&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dmayboroda/minima&quot;&gt;Minima&lt;/a&gt; - On-premises or fully local RAG&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TilmanGriesel/chipper&quot;&gt;Chipper&lt;/a&gt; - AI interface with Haystack RAG&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xark-argo/argo&quot;&gt;ARGO&lt;/a&gt; - RAG and deep research on Mac/Windows/Linux&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nickthecook/archyve&quot;&gt;Archyve&lt;/a&gt; - RAG-enabling document library&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://casibase.org&quot;&gt;Casibase&lt;/a&gt; - AI knowledge base with RAG and SSO&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.nurgo-software.com/products/brainsoup&quot;&gt;BrainSoup&lt;/a&gt; - Native client with RAG and multi-agent automation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Bots &amp;amp; Messaging&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/RockChinQ/LangBot&quot;&gt;LangBot&lt;/a&gt; - Multi-platform messaging bots with agents and RAG&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Soulter/AstrBot/&quot;&gt;AstrBot&lt;/a&gt; - Multi-platform chatbot with RAG and plugins&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kevinthedang/discord-ollama&quot;&gt;Discord-Ollama Chat Bot&lt;/a&gt; - TypeScript Discord bot&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ruecat/ollama-telegram&quot;&gt;Ollama Telegram Bot&lt;/a&gt; - Telegram bot&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/innightwolfsleep/llm_telegram_bot&quot;&gt;LLM Telegram Bot&lt;/a&gt; - Telegram bot for roleplay&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Terminal &amp;amp; CLI&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sigoden/aichat&quot;&gt;aichat&lt;/a&gt; - All-in-one LLM CLI with Shell Assistant, RAG, and AI tools&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggozad/oterm&quot;&gt;oterm&lt;/a&gt; - Terminal client for Ollama&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sammcj/gollama&quot;&gt;gollama&lt;/a&gt; - Go-based model manager for Ollama&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yusufcanb/tlm&quot;&gt;tlm&lt;/a&gt; - Local shell copilot&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pythops/tenere&quot;&gt;tenere&lt;/a&gt; - TUI for LLMs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/paulrobello/parllama&quot;&gt;ParLlama&lt;/a&gt; - TUI for Ollama&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/taketwo/llm-ollama&quot;&gt;llm-ollama&lt;/a&gt; - Plugin for &lt;a href=&quot;https://llm.datasette.io/en/stable/&quot;&gt;Datasette&#39;s LLM CLI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/djcopley/ShellOracle&quot;&gt;ShellOracle&lt;/a&gt; - Shell command suggestions&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mrdjohnson/llm-x&quot;&gt;LLM-X&lt;/a&gt; - Progressive web app for LLMs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pgibler/cmdh&quot;&gt;cmdh&lt;/a&gt; - Natural language to shell commands&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vinhnx/vt.ai&quot;&gt;VT&lt;/a&gt; - Minimal multimodal AI chat app&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Productivity &amp;amp; Apps&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AppFlowy-IO/AppFlowy&quot;&gt;AppFlowy&lt;/a&gt; - AI collaborative workspace, self-hostable Notion alternative&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mediar-ai/screenpipe&quot;&gt;Screenpipe&lt;/a&gt; - 24/7 screen and mic recording with AI-powered search&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/thewh1teagle/vibe&quot;&gt;Vibe&lt;/a&gt; - Transcribe and analyze meetings&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/n4ze3m/page-assist&quot;&gt;Page Assist&lt;/a&gt; - Chrome extension for AI-powered browsing&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/NativeMindBrowser/NativeMindExtension&quot;&gt;NativeMind&lt;/a&gt; - Private, on-device browser AI assistant&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ParisNeo/ollama_proxy_server&quot;&gt;Ollama Fortress&lt;/a&gt; - Security proxy for Ollama&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/1Panel-dev/1Panel/&quot;&gt;1Panel&lt;/a&gt; - Web-based Linux server management&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Writeopia/Writeopia&quot;&gt;Writeopia&lt;/a&gt; - Text editor with Ollama integration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/reid41/QA-Pilot&quot;&gt;QA-Pilot&lt;/a&gt; - GitHub code repository understanding&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/MassimilianoPasquini97/raycast_ollama&quot;&gt;Raycast extension&lt;/a&gt; - Ollama in Raycast&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mateuszmigas/painting-droid&quot;&gt;Painting Droid&lt;/a&gt; - Painting app with AI integrations&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/doolijb/serene-pub&quot;&gt;Serene Pub&lt;/a&gt; - AI roleplaying app&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gitlab.com/mayan-edms/mayan-edms&quot;&gt;Mayan EDMS&lt;/a&gt; - Document management with Ollama workflows&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.tagspaces.org&quot;&gt;TagSpaces&lt;/a&gt; - File management with &lt;a href=&quot;https://docs.tagspaces.org/ai/&quot;&gt;AI tagging&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Observability &amp;amp; Monitoring&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.comet.com/docs/opik/cookbook/ollama&quot;&gt;Opik&lt;/a&gt; - Debug, evaluate, and monitor LLM applications&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/openlit/openlit&quot;&gt;OpenLIT&lt;/a&gt; - OpenTelemetry-native monitoring for Ollama and GPUs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://lunary.ai/docs/integrations/ollama&quot;&gt;Lunary&lt;/a&gt; - LLM observability with analytics and PII masking&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://langfuse.com/docs/integrations/ollama&quot;&gt;Langfuse&lt;/a&gt; - Open source LLM observability&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.honeyhive.ai/integrations/ollama&quot;&gt;HoneyHive&lt;/a&gt; - AI observability and evaluation for agents&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mlflow.org/docs/latest/llms/tracing/index.html#automatic-tracing&quot;&gt;MLflow Tracing&lt;/a&gt; - Open source LLM observability&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Database &amp;amp; Embeddings&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/timescale/pgai&quot;&gt;pgai&lt;/a&gt; - PostgreSQL as a vector database (&lt;a href=&quot;https://github.com/timescale/pgai/raw/main/docs/vectorizer-quick-start.md&quot;&gt;guide&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mindsdb/mindsdb/raw/staging/mindsdb/integrations/handlers/ollama_handler/README.md&quot;&gt;MindsDB&lt;/a&gt; - Connect Ollama with 200+ data platforms&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/philippgille/chromem-go/raw/v0.5.0/embed_ollama.go&quot;&gt;chromem-go&lt;/a&gt; - Embeddable vector database for Go (&lt;a href=&quot;https://github.com/philippgille/chromem-go/tree/v0.5.0/examples/rag-wikipedia-ollama&quot;&gt;example&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dbkangaroo/kangaroo&quot;&gt;Kangaroo&lt;/a&gt; - AI-powered SQL client&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Infrastructure &amp;amp; Deployment&lt;/h3&gt; 
&lt;h4&gt;Cloud&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cloud.google.com/run/docs/tutorials/gpu-gemma2-with-ollama&quot;&gt;Google Cloud&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://fly.io/docs/python/do-more/add-ollama/&quot;&gt;Fly.io&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.koyeb.com/deploy/ollama&quot;&gt;Koyeb&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/av/harbor&quot;&gt;Harbor&lt;/a&gt; - Containerized LLM toolkit with Ollama as default backend&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Package Managers&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://archlinux.org/packages/extra/x86_64/ollama/&quot;&gt;Pacman&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://formulae.brew.sh/formula/ollama&quot;&gt;Homebrew&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://search.nixos.org/packages?show=ollama&amp;amp;from=0&amp;amp;size=50&amp;amp;sort=relevance&amp;amp;type=packages&amp;amp;query=ollama&quot;&gt;Nix package&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://artifacthub.io/packages/helm/ollama-helm/ollama&quot;&gt;Helm Chart&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gentoo/guru/tree/master/app-misc/ollama&quot;&gt;Gentoo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://flox.dev/blog/ollama-part-one&quot;&gt;Flox&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://codeberg.org/tusharhero/ollama-guix&quot;&gt;Guix channel&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>helm/helm</title>
      <link>https://github.com/helm/helm</link>
      <description>&lt;p&gt;The Kubernetes Package Manager&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Helm&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/helm/helm/actions?workflow=release&quot;&gt;&lt;img src=&quot;https://github.com/helm/helm/workflows/release/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://goreportcard.com/report/helm.sh/helm/v4&quot;&gt;&lt;img src=&quot;https://goreportcard.com/badge/helm.sh/helm/v4&quot; alt=&quot;Go Report Card&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://pkg.go.dev/helm.sh/helm/v4&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1?label=godoc&amp;amp;message=reference&amp;amp;color=blue&quot; alt=&quot;GoDoc&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/3131&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/3131/badge&quot; alt=&quot;CII Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/helm/helm&quot;&gt;&lt;img src=&quot;https://api.scorecard.dev/projects/github.com/helm/helm/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://insights.linuxfoundation.org/project/helm&quot;&gt;&lt;img src=&quot;https://insights.linuxfoundation.org/api/badge/health-score?project=helm&quot; alt=&quot;LFX Health Score&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Helm is a tool for managing Charts. Charts are packages of pre-configured Kubernetes resources.&lt;/p&gt; 
&lt;p&gt;Use Helm to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Find and use &lt;a href=&quot;https://artifacthub.io/packages/search?kind=0&quot;&gt;popular software packaged as Helm Charts&lt;/a&gt; to run in Kubernetes&lt;/li&gt; 
 &lt;li&gt;Share your own applications as Helm Charts&lt;/li&gt; 
 &lt;li&gt;Create reproducible builds of your Kubernetes applications&lt;/li&gt; 
 &lt;li&gt;Intelligently manage your Kubernetes manifest files&lt;/li&gt; 
 &lt;li&gt;Manage releases of Helm packages&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Helm in a Handbasket&lt;/h2&gt; 
&lt;p&gt;Helm is a tool that streamlines installing and managing Kubernetes applications. Think of it like apt/yum/homebrew for Kubernetes.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Helm renders your templates and communicates with the Kubernetes API&lt;/li&gt; 
 &lt;li&gt;Helm runs on your laptop, CI/CD, or wherever you want it to run.&lt;/li&gt; 
 &lt;li&gt;Charts are Helm packages that contain at least two things: 
  &lt;ul&gt; 
   &lt;li&gt;A description of the package (&lt;code&gt;Chart.yaml&lt;/code&gt;)&lt;/li&gt; 
   &lt;li&gt;One or more templates, which contain Kubernetes manifest files&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Charts can be stored on disk, or fetched from remote chart repositories (like Debian or RedHat packages)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Helm Development and Stable Versions&lt;/h2&gt; 
&lt;p&gt;Helm v4 is the current stable release, developed on the &lt;code&gt;main&lt;/code&gt; branch. Helm v3 is in support mode on the &lt;code&gt;dev-v3&lt;/code&gt; branch: bug fixes until July 8th 2026, security fixes until November 11th 2026.&lt;/p&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;Binary downloads of the Helm client can be found on &lt;a href=&quot;https://github.com/helm/helm/releases/latest&quot;&gt;the Releases page&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Unpack the &lt;code&gt;helm&lt;/code&gt; binary and add it to your PATH and you are good to go!&lt;/p&gt; 
&lt;p&gt;If you want to use a package manager:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; users can use &lt;code&gt;brew install helm&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://chocolatey.org/&quot;&gt;Chocolatey&lt;/a&gt; users can use &lt;code&gt;choco install kubernetes-helm&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/windows/package-manager/&quot;&gt;Winget&lt;/a&gt; users can use &lt;code&gt;winget install Helm.Helm&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://scoop.sh/&quot;&gt;Scoop&lt;/a&gt; users can use &lt;code&gt;scoop install helm&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://snapcraft.io/&quot;&gt;Snapcraft&lt;/a&gt; users can use &lt;code&gt;snap install helm --classic&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://flox.dev&quot;&gt;Flox&lt;/a&gt; users can use &lt;code&gt;flox install kubernetes-helm&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mise.jdx.dev/&quot;&gt;Mise-en-place&lt;/a&gt; users can use &lt;code&gt;mise use -g helm@latest&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To rapidly get Helm up and running, start with the &lt;a href=&quot;https://helm.sh/docs/intro/quickstart/&quot;&gt;Quick Start Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://helm.sh/docs/intro/install/&quot;&gt;installation guide&lt;/a&gt; for more options, including installing pre-releases.&lt;/p&gt; 
&lt;h2&gt;Docs&lt;/h2&gt; 
&lt;p&gt;Get started with the &lt;a href=&quot;https://helm.sh/docs/intro/quickstart/&quot;&gt;Quick Start guide&lt;/a&gt; or plunge into the &lt;a href=&quot;https://helm.sh/docs&quot;&gt;complete documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/helm/helm/milestones&quot;&gt;Helm roadmap uses GitHub milestones&lt;/a&gt; to track the progress of the project.&lt;/p&gt; 
&lt;p&gt;Helm v4 development happens on the &lt;code&gt;main&lt;/code&gt; branch. Helm v3 is in support mode on the &lt;code&gt;dev-v3&lt;/code&gt; branch and receives only bug and security fixes.&lt;/p&gt; 
&lt;h2&gt;Community, discussion, contribution, and support&lt;/h2&gt; 
&lt;p&gt;You can reach the Helm community and developers via the following channels:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kubernetes.slack.com&quot;&gt;Kubernetes Slack&lt;/a&gt;: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://kubernetes.slack.com/messages/helm-users&quot;&gt;#helm-users&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://kubernetes.slack.com/messages/helm-dev&quot;&gt;#helm-dev&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://kubernetes.slack.com/messages/charts&quot;&gt;#charts&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Mailing List: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://lists.cncf.io/g/cncf-helm&quot;&gt;Helm Mailing List&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Developer Call: Thursdays at 9:30-10:00 Pacific (&lt;a href=&quot;https://github.com/helm/community/raw/master/communication.md#meetings&quot;&gt;meeting details&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Contribution&lt;/h3&gt; 
&lt;p&gt;If you&#39;re interested in contributing, please refer to the &lt;a href=&quot;https://raw.githubusercontent.com/helm/helm/main/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt; &lt;strong&gt;before submitting a pull request&lt;/strong&gt;.&lt;/p&gt; 
&lt;h3&gt;Code of conduct&lt;/h3&gt; 
&lt;p&gt;Participation in the Helm community is governed by the &lt;a href=&quot;https://raw.githubusercontent.com/helm/helm/main/code-of-conduct.md&quot;&gt;Code of Conduct&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>m1k1o/neko</title>
      <link>https://github.com/m1k1o/neko</link>
      <description>&lt;p&gt;A self hosted virtual browser that runs in docker and uses WebRTC.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://github.com/m1k1o/neko&quot; title=&quot;Neko&#39;s Github repository.&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/logo.png&quot; width=&quot;400&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/m1k1o/neko/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/m1k1o/neko&quot; alt=&quot;release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/m1k1o/neko/raw/master/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/m1k1o/neko&quot; alt=&quot;license&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/m1k1o/neko&quot;&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/m1k1o/neko&quot; alt=&quot;pulls&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/m1k1o/neko/issues&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/issues/m1k1o/neko&quot; alt=&quot;issues&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/sponsors/m1k1o&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/-sponsor-red&quot; alt=&quot;issues&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://discord.gg/HXQJmqNJMz&quot;&gt; &lt;img src=&quot;https://discordapp.com/api/guilds/665851821906067466/widget.png&quot; alt=&quot;Chat on discord&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://hellogithub.com/repository/4536d4546af24196af3f08a023dfa007&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=4536d4546af24196af3f08a023dfa007&amp;amp;claim_uid=0x19e4dJwD83aW2&amp;amp;theme=small&quot; alt=&quot;Featured｜HelloGitHub&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/m1k1o/neko/actions&quot;&gt; &lt;img src=&quot;https://github.com/m1k1o/neko/actions/workflows/ghcr.yml/badge.svg?sanitize=true&quot; alt=&quot;build&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
 &lt;img src=&quot;https://neko.m1k1o.net/img/intro.gif&quot; width=&quot;650&quot; height=&quot;auto&quot; /&gt; 
&lt;/div&gt; 
&lt;h1&gt;n.eko&lt;/h1&gt; 
&lt;p&gt;Welcome to Neko, a self-hosted virtual browser that runs in Docker and uses WebRTC technology. Neko is a powerful tool that allows you to &lt;strong&gt;run a fully-functional browser in a virtual environment&lt;/strong&gt;, giving you the ability to &lt;strong&gt;access the internet securely and privately from anywhere&lt;/strong&gt;. With Neko, you can browse the web, &lt;strong&gt;run applications&lt;/strong&gt;, and perform other tasks just as you would on a regular browser, all within a &lt;strong&gt;secure and isolated environment&lt;/strong&gt;. Whether you are a developer looking to test web applications, a &lt;strong&gt;privacy-conscious user seeking a secure browsing experience&lt;/strong&gt;, or simply someone who wants to take advantage of the &lt;strong&gt;convenience and flexibility of a virtual browser&lt;/strong&gt;, Neko is the perfect solution.&lt;/p&gt; 
&lt;p&gt;In addition to its security and privacy features, Neko offers the &lt;strong&gt;ability for multiple users to access it simultaneously&lt;/strong&gt;. This makes it an ideal solution for teams or organizations that need to share access to a browser, as well as for individuals who want to use &lt;strong&gt;multiple devices to access the same virtual environment&lt;/strong&gt;. With Neko, you can &lt;strong&gt;easily and securely share access to a browser with others&lt;/strong&gt;, without having to worry about maintaining separate configurations or settings. Whether you need to &lt;strong&gt;collaborate on a project&lt;/strong&gt;, access shared resources, or simply want to &lt;strong&gt;share access to a browser with friends or family&lt;/strong&gt;, Neko makes it easy to do so.&lt;/p&gt; 
&lt;p&gt;Neko is also a great tool for &lt;strong&gt;hosting watch parties&lt;/strong&gt; and interactive presentations. With its virtual browser capabilities, Neko allows you to host watch parties and presentations that are &lt;strong&gt;accessible from anywhere&lt;/strong&gt;, without the need for in-person gatherings. This makes it easy to &lt;strong&gt;stay connected with friends and colleagues&lt;/strong&gt;, even when you are unable to meet in person. With Neko, you can easily host a watch party or give an &lt;strong&gt;interactive presentation&lt;/strong&gt;, whether it&#39;s for leisure or work. Simply invite your guests to join the virtual environment, and you can share the screen and &lt;strong&gt;interact with them in real-time&lt;/strong&gt;.&lt;/p&gt; 
&lt;h2&gt;About&lt;/h2&gt; 
&lt;p&gt;This app uses WebRTC to stream a desktop inside of a docker container, original author made this because &lt;a href=&quot;https://en.wikipedia.org/wiki/Rabb.it&quot;&gt;rabb.it&lt;/a&gt; went under and his internet could not handle streaming and discord kept crashing when his friend attempted to. He just wanted to watch anime with his friends ლ(ಠ益ಠლ) so he started digging throughout the internet and found a few &lt;em&gt;kinda&lt;/em&gt; clones, but none of them had the virtual browser, then he found &lt;a href=&quot;https://github.com/Khauri/Turtus&quot;&gt;Turtus&lt;/a&gt; and he was able to figure out the rest.&lt;/p&gt; 
&lt;p&gt;Then I found &lt;a href=&quot;https://github.com/nurdism/neko&quot;&gt;this&lt;/a&gt; project and started to dig into it. I really liked the idea of having collaborative browser browsing together with multiple people, so I created a fork. Initially, I wanted to merge my changes to the upstream repository, but the original author did not have time for this project anymore and it got eventually archived.&lt;/p&gt; 
&lt;h2&gt;Use-cases and comparison&lt;/h2&gt; 
&lt;p&gt;Neko started as a virtual browser that is streamed using WebRTC to multiple users.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;It is &lt;strong&gt;not only limited to a browser&lt;/strong&gt;; it can run anything that runs on linux (e.g. VLC). Browser only happens to be the most popular and widely used use-case.&lt;/li&gt; 
 &lt;li&gt;In fact, it is not limited to a single program either; you can install a full desktop environment (e.g. XFCE, KDE).&lt;/li&gt; 
 &lt;li&gt;Speaking of limits, it does not need to run in a container; you could install neko on your host, connect to your X server and control your whole VM.&lt;/li&gt; 
 &lt;li&gt;Theoretically it is not limited to only X server, anything that can be controlled and scraped periodically for images could be used instead. 
  &lt;ul&gt; 
   &lt;li&gt;Like implementing RDP or VNC protocol, where neko would only act as WebRTC relay server. This is currently only future.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Primary use case is connecting with multiple people, leveraging real time synchronization and interactivity:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Watch party&lt;/strong&gt; - watching video content together with multiple people and reacting to it (chat, emotes) - open source alternative to &lt;a href=&quot;https://giggl.app/&quot;&gt;giggl.app&lt;/a&gt; or &lt;a href=&quot;https://watch.hyperbeam.com&quot;&gt;hyperbeam&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Interactive presentation&lt;/strong&gt; - not only screen sharing, but others can control the screen.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Collaborative tool&lt;/strong&gt; - brainstorming ideas, cobrowsing, code debugging together.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Support/Teaching&lt;/strong&gt; - interactively guiding people in controlled environment.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Embed anything&lt;/strong&gt; - embed virtual browser in your web app - open source alternative to &lt;a href=&quot;https://hyperbeam.com/&quot;&gt;hyperbeam API&lt;/a&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;open any third-party website or application, synchronize audio and video flawlessly among multiple participants.&lt;/li&gt; 
   &lt;li&gt;request rooms using API with &lt;a href=&quot;https://github.com/m1k1o/neko-rooms&quot;&gt;neko-rooms&lt;/a&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jameskitt616/vrchat_streaming&quot;&gt;&lt;strong&gt;Neko inside VR Chat&lt;/strong&gt;&lt;/a&gt; - watch remote browser together with friends in VR.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Other use cases that benefit from single-user:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Personal workspace&lt;/strong&gt; - streaming containerized apps and desktops to end-users - similar to &lt;a href=&quot;https://www.kasmweb.com/&quot;&gt;kasm&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Persistent browser&lt;/strong&gt; - own browser with persistent cookies available anywhere - similar to &lt;a href=&quot;https://www.mightyapp.com/&quot;&gt;mightyapp&lt;/a&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;no state is left on the host browser after terminating the connection.&lt;/li&gt; 
   &lt;li&gt;sensitive data like cookies are not transferred - only video is shared.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Throwaway browser&lt;/strong&gt; - a better solution for planning secret parties and buying birthday gifts off the internet. 
  &lt;ul&gt; 
   &lt;li&gt;use Tor Browser and &lt;a href=&quot;https://github.com/m1k1o/neko-vpn&quot;&gt;VPN&lt;/a&gt; for additional anonymity.&lt;/li&gt; 
   &lt;li&gt;mitigates risk of OS fingerprinting and browser vulnerabilities by running in container.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Session broadcasting&lt;/strong&gt; - broadcast room content using RTMP (to e.g. twitch or youtube...).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Session recording&lt;/strong&gt; - broadcast RTMP can be saved to a file using e.g. &lt;a href=&quot;https://www.nginx.com/products/nginx/modules/rtmp-media-streaming/&quot;&gt;nginx-rtmp&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;have clean environment when recording tutorials.&lt;/li&gt; 
   &lt;li&gt;no need to hide bookmarks or use incognito mode.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Jump host&lt;/strong&gt; - access your internal applications securely without the need for VPN.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Automated browser&lt;/strong&gt; - you can install &lt;a href=&quot;https://playwright.dev/&quot;&gt;playwright&lt;/a&gt; or &lt;a href=&quot;https://pptr.dev/&quot;&gt;puppeteer&lt;/a&gt; and automate tasks while being able to actively intercept them.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Compared to clientless remote desktop gateway (e.g. &lt;a href=&quot;https://guacamole.apache.org/&quot;&gt;Apache Guacamole&lt;/a&gt; or &lt;a href=&quot;https://github.com/novnc/websockify&quot;&gt;websockify&lt;/a&gt; with &lt;a href=&quot;https://novnc.com/&quot;&gt;noVNC&lt;/a&gt;), installed with remote desktop server along with desired program (e.g. &lt;a href=&quot;https://docs.linuxserver.io/images/docker-firefox&quot;&gt;linuxserver/firefox&lt;/a&gt;) provides neko additionally:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Smooth video&lt;/strong&gt; because it uses WebRTC and not images sent over WebSockets.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built in audio&lt;/strong&gt; support, what is not part of Apache Guacamole or noVNC.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-participant control&lt;/strong&gt;, what is not natively supported by Apache Guacamole or noVNC.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Supported browsers&lt;/h3&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/firefox.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/firefox&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/tor-browser.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/tor-browser&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/waterfox.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/waterfox&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/chromium.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/chromium&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/google-chrome.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/google-chrome&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/ungoogled-chromium.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/google-chrome&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/microsoft-edge.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/microsoft-edge&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#brave&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/brave.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/brave&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/vivaldi.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/vivaldi&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#opera&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/opera.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/opera&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;p&gt;... see &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images&quot;&gt;all available images&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;Other applications&lt;/h3&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/xfce.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/xfce&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#kde&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/kde.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/kde&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/remmina.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/remmina&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc&quot;&gt; &lt;img src=&quot;https://neko.m1k1o.net/img/icons/vlc.svg?sanitize=true&quot; title=&quot;ghcr.io/m1k1o/neko/vlc&quot; width=&quot;60&quot; height=&quot;auto&quot; /&gt; &lt;/a&gt; 
 &lt;p&gt;... others in &lt;a href=&quot;https://github.com/m1k1o/neko-apps&quot;&gt;m1k1o/neko-apps&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;Why neko?&lt;/h3&gt; 
&lt;p&gt;I like cats 🐱 (&lt;code&gt;Neko&lt;/code&gt; is the Japanese word for cat), I&#39;m a weeb/nerd.&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;strong&gt;But why the cat butt?&lt;/strong&gt;&lt;/em&gt; Because cats are &lt;em&gt;assholes&lt;/em&gt;, but you love them anyways.&lt;/p&gt; 
&lt;h2&gt;Multiple rooms&lt;/h2&gt; 
&lt;p&gt;For neko room management software, visit &lt;a href=&quot;https://github.com/m1k1o/neko-rooms&quot;&gt;neko-rooms&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;It also offers &lt;a href=&quot;https://github.com/m1k1o/neko-rooms/?tab=readme-ov-file#zero-knowledge-installation-with-https&quot;&gt;Zero-knowledge installation (with HTTPS)&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Full documentation is available at &lt;a href=&quot;https://neko.m1k1o.net/&quot;&gt;neko.m1k1o.net&lt;/a&gt;. Key sections include:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/migration-from-v2&quot;&gt;Migration from V2&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/quick-start&quot;&gt;Getting Started&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/installation/examples&quot;&gt;Examples&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/faq&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neko.m1k1o.net/docs/v3/troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to Contribute&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome! Check the &lt;a href=&quot;https://neko.m1k1o.net/contributing&quot;&gt;Contributing Guide&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;If you find Neko useful, consider supporting the project via &lt;a href=&quot;https://github.com/sponsors/m1k1o&quot;&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
