<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    
    <title>GitHub Go Daily Trending Repositories</title>
    <description>Daily Trending Repositories of Go on GitHub</description>
    
    <pubDate>Mon, 17 Aug 2026 02:22:03 GMT</pubDate>
    <link>https://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>aldinokemal/go-whatsapp-web-multidevice</title>
      <link>https://github.com/aldinokemal/go-whatsapp-web-multidevice</link>
      <description>&lt;p&gt;GOWA - WhatsApp REST API with support for UI, Multi Account, Webhooks, and MCP, and Chatwoot. Built with Golang for efficient memory use.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;!-- markdownlint-disable-next-line MD033 --&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/gallery/gowa.svg?sanitize=true&quot; alt=&quot;GoWA Logo&quot; width=&quot;200&quot; height=&quot;200&quot; /&gt; 
 &lt;h2&gt;Golang WhatsApp - Built with Go for efficient memory use&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.patreon.com/c/aldinokemal&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Support%20on-Patreon-orange.svg?sanitize=true&quot; alt=&quot;Patreon&quot; /&gt;&lt;/a&gt; &lt;strong&gt;If you&#39;re using this tools to generate income, consider supporting its development by becoming a Patreon member!&lt;/strong&gt; Your support helps ensure the library stays maintained and receives regular updates!&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/aldinokemal/go-whatsapp-web-multidevice&quot; alt=&quot;release version&quot; /&gt; &lt;img src=&quot;https://github.com/aldinokemal/go-whatsapp-web-multidevice/actions/workflows/build-docker-image.yaml/badge.svg?sanitize=true&quot; alt=&quot;Build Image&quot; /&gt; &lt;img src=&quot;https://github.com/aldinokemal/go-whatsapp-web-multidevice/actions/workflows/release.yml/badge.svg?sanitize=true&quot; alt=&quot;Binary Release&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Support for &lt;code&gt;ARM&lt;/code&gt; &amp;amp; &lt;code&gt;AMD&lt;/code&gt; Architecture along with &lt;code&gt;MCP&lt;/code&gt; Support&lt;/h2&gt; 
&lt;p&gt;Download:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aldinokemal/go-whatsapp-web-multidevice/releases/latest&quot;&gt;Release&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://hub.docker.com/r/aldinokemal2104/go-whatsapp-web-multidevice/tags&quot;&gt;Docker Hub&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aldinokemal/go-whatsapp-web-multidevice/pkgs/container/go-whatsapp-web-multidevice&quot;&gt;GitHub Container Registry&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Support n8n package (&lt;a href=&quot;http://n8n.io&quot;&gt;n8n.io&lt;/a&gt;)&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/@aldinokemal2104/n8n-nodes-gowa&quot;&gt;n8n package&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Go to Settings -&amp;gt; Community Nodes -&amp;gt; Input &lt;code&gt;@aldinokemal2104/n8n-nodes-gowa&lt;/code&gt; -&amp;gt; Install&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Breaking Changes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;code&gt;v6&lt;/code&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;For REST mode, you need to run &lt;code&gt;&amp;lt;binary&amp;gt; rest&lt;/code&gt; instead of &lt;code&gt;&amp;lt;binary&amp;gt;&lt;/code&gt; 
    &lt;ul&gt; 
     &lt;li&gt;for example: &lt;code&gt;./whatsapp rest&lt;/code&gt; instead of &lt;s&gt;./whatsapp&lt;/s&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;For MCP mode, you need to run &lt;code&gt;&amp;lt;binary&amp;gt; mcp&lt;/code&gt; 
    &lt;ul&gt; 
     &lt;li&gt;for example: &lt;code&gt;./whatsapp mcp&lt;/code&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;code&gt;v7&lt;/code&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Starting version 7.x we are using goreleaser to build the binary, so you can download the binary from &lt;a href=&quot;https://github.com/aldinokemal/go-whatsapp-web-multidevice/releases/latest&quot;&gt;release&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;code&gt;v8&lt;/code&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Multi-device support&lt;/strong&gt;: You can now connect and manage multiple WhatsApp accounts simultaneously in a single server instance&lt;/p&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;New Device Management API&lt;/strong&gt;: New endpoints under &lt;code&gt;/devices&lt;/code&gt; for managing multiple devices&lt;/p&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Device scoping required&lt;/strong&gt;: All device-scoped REST API calls now require either:&lt;/p&gt; 
    &lt;ul&gt; 
     &lt;li&gt;&lt;code&gt;X-Device-Id&lt;/code&gt; header, or&lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;device_id&lt;/code&gt; query parameter&lt;/li&gt; 
     &lt;li&gt;If only one device is registered, it will be used as the default&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;WebSocket device scoping&lt;/strong&gt;: Connect to &lt;code&gt;/ws?device_id=&amp;lt;id&amp;gt;&lt;/code&gt; to scope WebSocket to a specific device&lt;/p&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Remote UI support&lt;/strong&gt;: CORS allows the &lt;code&gt;Authorization&lt;/code&gt; and &lt;code&gt;X-Device-Id&lt;/code&gt; headers, so a standalone web UI (e.g. &lt;a href=&quot;https://github.com/aldinokemal/gowa-ui&quot;&gt;gowa-ui&lt;/a&gt;) hosted on another origin can call the API directly. &lt;code&gt;GET /app/info&lt;/code&gt; exposes version and media size limits. Since browsers cannot set headers on WebSocket connections, pass &lt;code&gt;/ws?device_id=&amp;lt;id&amp;gt;&amp;amp;authorization=&amp;lt;base64(user:pass)&amp;gt;&lt;/code&gt; when basic auth is enabled (use TLS — the credential is visible in the URL)&lt;/p&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Webhook payload changes&lt;/strong&gt;: All webhook payloads now include a top-level &lt;code&gt;device_id&lt;/code&gt; field identifying which device received the event:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;```json
{
  &quot;event&quot;: &quot;message&quot;,
  &quot;device_id&quot;: &quot;628123456789@s.whatsapp.net&quot;,
  &quot;payload&quot;: { ... }
}
```
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;code&gt;v9&lt;/code&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;MCP and API are unified under &lt;code&gt;rest&lt;/code&gt;&lt;/strong&gt;: MCP is no longer a separate mode or process. Run &lt;code&gt;./whatsapp rest&lt;/code&gt; to serve both the REST API and MCP; MCP is available at &lt;code&gt;/mcp&lt;/code&gt; (no standalone &lt;code&gt;mcp&lt;/code&gt; subcommand). See &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/#mcp-server-model-context-protocol&quot;&gt;MCP Server (Model Context Protocol)&lt;/a&gt; for migration details.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;UI moved to a separate repository&lt;/strong&gt;: The web dashboard is no longer bundled in this repo. It now lives at &lt;a href=&quot;https://github.com/aldinokemal/gowa-ui&quot;&gt;aldinokemal/gowa-ui&lt;/a&gt; and ships as a single self-contained &lt;code&gt;gowa-ui.html&lt;/code&gt;. This server is now a pure API backend that downloads the latest dashboard release at startup, verifies its sha256 digest, caches it under &lt;code&gt;storages/ui/&lt;/code&gt;, and serves it at &lt;code&gt;/&lt;/code&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/#web-dashboard-gowa-ui&quot;&gt;Web dashboard (gowa-ui)&lt;/a&gt; for the &lt;code&gt;APP_UI_*&lt;/code&gt; settings, supply-chain pinning, and air-gapped deployment.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Feature&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Send WhatsApp message via http API, &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/openapi.yaml&quot;&gt;docs/openapi.yaml&lt;/a&gt; for more details&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;MCP (Model Context Protocol) Server Support&lt;/strong&gt; - Integrate with AI agents and tools using standardized protocol&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Mention someone&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;@phoneNumber&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;example: &lt;code&gt;Hello @628974812XXXX, @628974812XXXX&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Ghost Mentions (Mention All)&lt;/strong&gt; - Mention group participants without showing &lt;code&gt;@phone&lt;/code&gt; in message text&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Pass phone numbers in &lt;code&gt;mentions&lt;/code&gt; field to mention users without visible &lt;code&gt;@&lt;/code&gt; in message&lt;/li&gt; 
   &lt;li&gt;Use special keyword &lt;code&gt;@everyone&lt;/code&gt; to automatically mention ALL group participants&lt;/li&gt; 
   &lt;li&gt;UI checkbox available in Send Message modal for groups&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Post Whatsapp Status&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Send Stickers&lt;/strong&gt; - Automatically converts images to WebP sticker format&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Supports JPG, JPEG, PNG, WebP, and GIF formats&lt;/li&gt; 
   &lt;li&gt;Automatic resizing to 512x512 pixels&lt;/li&gt; 
   &lt;li&gt;Preserves transparency for PNG images&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Animated WebP stickers&lt;/strong&gt; are supported but must meet WhatsApp requirements: 
    &lt;ul&gt; 
     &lt;li&gt;Must be exactly &lt;strong&gt;512x512 pixels&lt;/strong&gt;&lt;/li&gt; 
     &lt;li&gt;Must be under &lt;strong&gt;500KB&lt;/strong&gt; file size&lt;/li&gt; 
     &lt;li&gt;Maximum &lt;strong&gt;10 seconds&lt;/strong&gt; duration&lt;/li&gt; 
     &lt;li&gt;If your animated sticker doesn&#39;t meet these requirements, please resize it before uploading using tools like &lt;a href=&quot;https://ezgif.com/resize&quot;&gt;ezgif.com&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Compress image before send&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Compress video before send&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Change OS name become your app (it&#39;s the device name when connect via mobile)&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--os=Chrome&lt;/code&gt; or &lt;code&gt;--os=MyApplication&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Basic Auth (able to add multi credentials)&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--basic-auth=kemal:secret,toni:password,userName:secretPassword&lt;/code&gt;, or you can simplify&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;-b=kemal:secret,toni:password,userName:secretPassword&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Subpath deployment support&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--base-path=&quot;/gowa&quot;&lt;/code&gt; (allows deployment under a specific path like &lt;code&gt;/gowa/sub/path&lt;/code&gt;)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Customizable port and debug mode&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--port 8000&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;--debug true&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Auto reply message&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--autoreply=&quot;Don&#39;t reply this message&quot;&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Auto mark read incoming messages&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--auto-mark-read=true&lt;/code&gt; (automatically marks incoming messages as read)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Auto download media from incoming messages&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--auto-download-media=false&lt;/code&gt; (disable automatic media downloads, default: &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Auto reject incoming calls&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--auto-reject-call=true&lt;/code&gt; or &lt;code&gt;WHATSAPP_AUTO_REJECT_CALL=true&lt;/code&gt; (see &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/webhook-payload.md#call-events&quot;&gt;Webhook Payload&lt;/a&gt; for call events)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Configurable presence on connect&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--presence-on-connect=unavailable&lt;/code&gt; or &lt;code&gt;WHATSAPP_PRESENCE_ON_CONNECT=unavailable&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;available&lt;/code&gt; — mark as online (suppresses phone notifications)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;unavailable&lt;/code&gt; — register pushname without going online (default, preserves phone notifications)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;none&lt;/code&gt; — skip presence entirely (pushname won&#39;t be registered, contacts may see &quot;-&quot; as name)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Daily presence pulse&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--presence-pulse-enabled=true&lt;/code&gt; or &lt;code&gt;WHATSAPP_PRESENCE_PULSE_ENABLED=true&lt;/code&gt; (default: &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;--presence-pulse-interval=24h&lt;/code&gt; controls how often each connected device is pulsed&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;--presence-pulse-duration=5m&lt;/code&gt; controls how long the account stays &lt;code&gt;available&lt;/code&gt; before returning to &lt;code&gt;unavailable&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Webhook for received message&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--webhook=&quot;http://yourwebhook.site/handler&quot;&lt;/code&gt;, or you can simplify&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;-w=&quot;http://yourwebhook.site/handler&quot;&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;for more detail, see &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/webhook-payload.md&quot;&gt;Webhook Payload Documentation&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Per-Device Webhook&lt;/strong&gt; - Each device can have its own webhook URL&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Set via API: &lt;code&gt;PATCH /devices/:device_id/webhook&lt;/code&gt; with &lt;code&gt;{&quot;webhook_url&quot;: &quot;https://device-webhook.site/handler&quot;}&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Get via API: &lt;code&gt;GET /devices/:device_id/webhook&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;When a device has a custom webhook, events for that device are sent to the device-specific URL&lt;/li&gt; 
   &lt;li&gt;When no device webhook is set, events fall back to the global webhook (&lt;code&gt;--webhook&lt;/code&gt;)&lt;/li&gt; 
   &lt;li&gt;Set to empty string &lt;code&gt;&quot;&quot;&lt;/code&gt; via PATCH to clear and use global webhook&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Webhook Secret Our webhook will be sent to you with an HMAC header and a sha256 default key &lt;code&gt;secret&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;You may modify this by using the option below:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--webhook-secret=&quot;secret&quot;&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Webhook Payload Documentation&lt;/strong&gt; For detailed webhook payload schemas, security implementation, and integration examples, see &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/webhook-payload.md&quot;&gt;Webhook Payload Documentation&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Webhook Event Filtering&lt;/strong&gt; You can filter which events are forwarded to your webhook using:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--webhook-events=&quot;message,message.ack&quot;&lt;/code&gt; (comma-separated list)&lt;/li&gt; 
   &lt;li&gt;Or environment variable: &lt;code&gt;WHATSAPP_WEBHOOK_EVENTS=message,message.ack&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Available Webhook Events:&lt;/strong&gt;&lt;/p&gt; 
  &lt;table&gt; 
   &lt;thead&gt; 
    &lt;tr&gt; 
     &lt;th&gt;Event&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;message&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Text, media, contact, location messages&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;message.reaction&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Emoji reactions to messages&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;message.revoked&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Deleted/revoked messages&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;message.edited&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Edited messages&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;message.ack&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Delivery and read receipts&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;message.deleted&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Messages deleted for the user&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;chat_presence&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Typing and recording indicators from contacts&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;group.participants&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Group member join/leave/promote/demote events&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;group.joined&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;You were added to a group&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;label.edit&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;WhatsApp label metadata changed&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;label.association&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Label applied to or removed from a chat&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;newsletter.joined&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;You subscribed to a newsletter/channel&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;newsletter.left&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;You unsubscribed from a newsletter&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;newsletter.message&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;New message(s) posted in a newsletter&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;newsletter.mute&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Newsletter mute setting changed&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td&gt;&lt;code&gt;call.offer&lt;/code&gt;&lt;/td&gt; 
     &lt;td&gt;Incoming call received&lt;/td&gt; 
    &lt;/tr&gt; 
   &lt;/tbody&gt; 
  &lt;/table&gt; &lt;p&gt;If not configured (empty), all events will be forwarded.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Webhook JID Filtering&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;You can skip events for specific chats or senders (e.g. mute all groups) before they are forwarded:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--webhook-ignore-jids=&quot;@g.us,628123456789@s.whatsapp.net&quot;&lt;/code&gt; (comma-separated list)&lt;/li&gt; 
   &lt;li&gt;Or environment variable: &lt;code&gt;WHATSAPP_WEBHOOK_IGNORE_JIDS=@g.us&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Supports the &lt;code&gt;@g.us&lt;/code&gt; / &lt;code&gt;@s.whatsapp.net&lt;/code&gt; / &lt;code&gt;@lid&lt;/code&gt; wildcards (match a whole address space) and exact JIDs.&lt;/li&gt; 
   &lt;li&gt;This filters by conversation/sender and is independent of &lt;code&gt;--webhook-events&lt;/code&gt; (which filters by event type). The Chatwoot integration keeps its own &lt;code&gt;CHATWOOT_IGNORE_JIDS&lt;/code&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Webhook TLS Configuration&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If you encounter TLS certificate verification errors when using webhooks (e.g., with Cloudflare tunnels or self-signed certificates):&lt;/p&gt; &lt;pre&gt;&lt;code&gt;tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;You can disable TLS certificate verification using:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;--webhook-insecure-skip-verify=true&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Or environment variable: &lt;code&gt;WHATSAPP_WEBHOOK_INSECURE_SKIP_VERIFY=true&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Security Warning&lt;/strong&gt;: This option disables TLS certificate verification and should only be used in:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Development/testing environments&lt;/li&gt; 
   &lt;li&gt;Cloudflare tunnels (which provide their own security layer)&lt;/li&gt; 
   &lt;li&gt;Internal networks with self-signed certificates&lt;/li&gt; 
  &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;For production environments&lt;/strong&gt;, it&#39;s strongly recommended to use proper SSL certificates (e.g., Let&#39;s Encrypt) instead of disabling verification.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;p&gt;You can configure the application using either command-line flags (shown above) or environment variables. Configuration can be set in three ways (in order of priority):&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Command-line flags (highest priority)&lt;/li&gt; 
 &lt;li&gt;Environment variables&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;.env&lt;/code&gt; file (lowest priority)&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Environment Variables&lt;/h3&gt; 
&lt;p&gt;You can configure the application using environment variables. Configuration can be set in three ways (in order of priority):&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Command-line flags (highest priority)&lt;/li&gt; 
 &lt;li&gt;Environment variables&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;.env&lt;/code&gt; file (lowest priority)&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;To use environment variables:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Copy &lt;code&gt;.env.example&lt;/code&gt; to &lt;code&gt;.env&lt;/code&gt; in your project root (&lt;code&gt;cp src/.env.example src/.env&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Modify the values in &lt;code&gt;.env&lt;/code&gt; according to your needs&lt;/li&gt; 
 &lt;li&gt;Or set the same variables as system environment variables&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Available Environment Variables&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Variable&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
   &lt;th&gt;Example&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Application port&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;3000&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_PORT=8080&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_HOST&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Host address to bind the server&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;0.0.0.0&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_HOST=127.0.0.1&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_DEBUG&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable debug logging&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_DEBUG=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_OS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;OS name (device name in WhatsApp)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;GOWA&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_OS=MyApp&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_BASIC_AUTH&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Basic authentication credentials&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_BASIC_AUTH=user1:pass1,user2:pass2&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_BASE_PATH&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Base path for subpath deployment&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_BASE_PATH=/gowa&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_TRUSTED_PROXIES&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Trusted proxy IP ranges for reverse proxy&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_TRUSTED_PROXIES=0.0.0.0/0&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_CORS_ALLOWED_ORIGINS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Allowed CORS origins (any origin when empty)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;APP_CORS_ALLOWED_ORIGINS=https://ui.example.com&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DB_URI&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Database connection URI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;file:storages/whatsapp.db&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;DB_URI=postgres://user:pass@host/db&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DB_KEYS_URI&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Optional database URI for encryption/session key cache. Leave blank to use &lt;code&gt;DB_URI&lt;/code&gt;; avoid in-memory storage in production because restarts can lose WhatsApp session state.&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;DB_KEYS_URI=file:storages/whatsapp-keys.db?_foreign_keys=on&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHAT_STORAGE_MAX_OPEN_CONNS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Max concurrent SQLite connections for chat storage&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHAT_STORAGE_MAX_OPEN_CONNS=10&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_REPLY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-reply message&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_REPLY=&quot;Auto reply message&quot;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_MARK_READ&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-mark incoming messages as read&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_MARK_READ=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_DOWNLOAD_MEDIA&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-download media from incoming messages&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_DOWNLOAD_MEDIA=false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_REJECT_CALL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-reject incoming WhatsApp calls&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_AUTO_REJECT_CALL=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Webhook URL(s) for events (comma-separated)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK=https://webhook.site/xxx&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_SECRET&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Webhook secret for validation&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;secret&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_SECRET=super-secret-key&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_INSECURE_SKIP_VERIFY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Skip TLS verification for webhooks (insecure)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_INSECURE_SKIP_VERIFY=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_EVENTS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Whitelist of events to forward (comma-separated, empty = all)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_EVENTS=message,message.ack&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_IGNORE_JIDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;JIDs/wildcards to skip when forwarding (comma-separated)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_WEBHOOK_IGNORE_JIDS=@g.us&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_ACCOUNT_VALIDATION&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable account validation&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_ACCOUNT_VALIDATION=false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_ON_CONNECT&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Presence on connect: &lt;code&gt;available&lt;/code&gt;, &lt;code&gt;unavailable&lt;/code&gt;, or &lt;code&gt;none&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;unavailable&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_ON_CONNECT=unavailable&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PROXY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Outbound proxy for the WhatsApp WebSocket (socks5/http/https)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PROXY=socks5://user:pass@host:1080&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_PULSE_ENABLED&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable daily available/unavailable presence pulse&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_PULSE_ENABLED=false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_PULSE_INTERVAL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Interval between presence pulses&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;24h&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_PULSE_INTERVAL=24h&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_PULSE_DURATION&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Duration to stay available during each pulse&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;5m&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WHATSAPP_PRESENCE_PULSE_DURATION=5m&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_ENABLED&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable Chatwoot integration&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_ENABLED=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_URL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chatwoot instance URL&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_URL=https://app.chatwoot.com&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_API_TOKEN&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chatwoot API access token&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_API_TOKEN=your-api-token&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_ACCOUNT_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chatwoot account ID&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_ACCOUNT_ID=12345&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_INBOX_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chatwoot inbox ID&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_INBOX_ID=67890&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_DEVICE_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;WhatsApp device ID for Chatwoot (single-device / env fallback)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_DEVICE_ID=628xxx@s.whatsapp.net&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_ALLOWED_HOSTS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Allowlist of Chatwoot hosts for per-device configs (SSRF guard)&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_ALLOWED_HOSTS=app.chatwoot.com,chat.example.com&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_MESSAGES&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable message history sync to Chatwoot&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_MESSAGES=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_DAYS_LIMIT_IMPORT_MESSAGES&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Days of history to import&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_DAYS_LIMIT_IMPORT_MESSAGES=7&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_DB_URI&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Direct Chatwoot PostgreSQL URI for history sync&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_DB_URI=postgresql://user:pass@host:5432/chatwoot_production?sslmode=disable&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_PLACEHOLDER_MEDIA_MESSAGE&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Insert text placeholders for media rows during direct DB import&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_PLACEHOLDER_MEDIA_MESSAGE=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_MEDIA_WITH_REST&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Upload direct-DB import media rows through Chatwoot REST&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IMPORT_MEDIA_WITH_REST=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_AUTO_CREATE&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-create or reuse the Chatwoot API inbox at startup&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_AUTO_CREATE=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_INBOX_NAME&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Inbox name used when auto-create is enabled&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;WhatsApp&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_INBOX_NAME=WhatsApp Support&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_WEBHOOK_URL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Public GOWA Chatwoot reply webhook URL&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_WEBHOOK_URL=https://api.example.com/chatwoot/webhook?secret=shared&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_WEBHOOK_SECRET&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Shared secret required for incoming Chatwoot webhooks&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_WEBHOOK_SECRET=shared&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_REOPEN_CONVERSATION&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Reopen resolved Chatwoot conversations for returning contacts&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_REOPEN_CONVERSATION=false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_CONVERSATION_PENDING&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create new Chatwoot conversations as pending&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_CONVERSATION_PENDING=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IGNORE_JIDS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;JIDs or wildcards to exclude from Chatwoot forwarding&lt;/td&gt; 
   &lt;td&gt;-&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_IGNORE_JIDS=@g.us,628123@s.whatsapp.net&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_SIGN_MSG&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Prefix Chatwoot agent replies with the agent name&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_SIGN_MSG=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_SIGN_DELIMITER&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Delimiter between Chatwoot agent signature and message body&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;\n\n&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_SIGN_DELIMITER=&quot; - &quot;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_FORWARD_EDITS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mirror WhatsApp edits into Chatwoot threaded notes&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_FORWARD_EDITS=false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_FORWARD_DELETES&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mirror WhatsApp delete-for-everyone events into Chatwoot notes&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_FORWARD_DELETES=false&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_MESSAGE_READ&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Sync read state for linked WhatsApp/Chatwoot messages&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_MESSAGE_READ=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_MESSAGE_DELETE&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Delete linked opposite-side messages when deletion is reported&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CHATWOOT_MESSAGE_DELETE=true&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;For detailed webhook payload schemas, security implementation, and integration examples, see &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/webhook-payload.md&quot;&gt;Webhook Payload Documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;For comprehensive Chatwoot integration guide, see &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/chatwoot.md&quot;&gt;Chatwoot Integration Documentation&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Note: Command-line flags will override any values set in environment variables or &lt;code&gt;.env&lt;/code&gt; file.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;For more command &lt;code&gt;./whatsapp --help&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Requirements&lt;/h2&gt; 
&lt;h3&gt;System Requirements&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Go 1.25.5 or higher&lt;/strong&gt; (for building from source)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;FFmpeg&lt;/strong&gt; (for media processing)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Platform Support&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linux (x86_64, ARM64)&lt;/li&gt; 
 &lt;li&gt;macOS (Intel, Apple Silicon)&lt;/li&gt; 
 &lt;li&gt;Windows (x86_64) - WSL recommended&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Dependencies (without docker)&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Mac OS: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;brew install ffmpeg webp&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;export CGO_CFLAGS_ALLOW=&quot;-Xpreprocessor&quot;&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Linux: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;sudo apt install ffmpeg webp&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Windows (not recommended, prefer using &lt;a href=&quot;https://docs.microsoft.com/en-us/windows/wsl/install&quot;&gt;WSL&lt;/a&gt;): 
  &lt;ul&gt; 
   &lt;li&gt;Install ffmpeg: &lt;a href=&quot;https://www.ffmpeg.org/download.html#build-windows&quot;&gt;download here&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;Install libwebp: &lt;a href=&quot;https://developers.google.com/speed/webp/download&quot;&gt;download here&lt;/a&gt; (extract and add &lt;code&gt;bin&lt;/code&gt; folder to PATH)&lt;/li&gt; 
   &lt;li&gt;Add both to &lt;a href=&quot;https://www.google.com/search?q=windows+add+to+environment+path&quot;&gt;environment variable&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The &lt;code&gt;webp&lt;/code&gt; package provides &lt;code&gt;cwebp&lt;/code&gt; (encoder), &lt;code&gt;dwebp&lt;/code&gt; (decoder), and &lt;code&gt;webpmux&lt;/code&gt; (frame extractor) tools. FFmpeg is required for media processing. The libwebp tools (&lt;code&gt;webpmux&lt;/code&gt; + &lt;code&gt;dwebp&lt;/code&gt;) are used for animated WebP sticker support.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;How to use&lt;/h2&gt; 
&lt;h3&gt;Basic&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Clone this repo: &lt;code&gt;git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Open the folder that was cloned via cmd/terminal.&lt;/li&gt; 
 &lt;li&gt;run &lt;code&gt;cd src&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;run &lt;code&gt;go run . rest&lt;/code&gt; (for REST API mode)&lt;/li&gt; 
 &lt;li&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Docker (you don&#39;t need to install in required)&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Clone this repo: &lt;code&gt;git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Open the folder that was cloned via cmd/terminal.&lt;/li&gt; 
 &lt;li&gt;run &lt;code&gt;docker-compose up -d --build&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;open &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Build your own binary&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Clone this repo &lt;code&gt;git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Open the folder that was cloned via cmd/terminal.&lt;/li&gt; 
 &lt;li&gt;run &lt;code&gt;cd src&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;run 
  &lt;ol&gt; 
   &lt;li&gt;Linux &amp;amp; MacOS: &lt;code&gt;go build -o whatsapp&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Windows (CMD / PowerShell): &lt;code&gt;go build -o whatsapp.exe&lt;/code&gt;&lt;/li&gt; 
  &lt;/ol&gt; &lt;/li&gt; 
 &lt;li&gt;run 
  &lt;ol&gt; 
   &lt;li&gt;Linux &amp;amp; MacOS: &lt;code&gt;./whatsapp rest&lt;/code&gt; (for REST API mode) 
    &lt;ol&gt; 
     &lt;li&gt;run &lt;code&gt;./whatsapp --help&lt;/code&gt; for more detail flags&lt;/li&gt; 
    &lt;/ol&gt; &lt;/li&gt; 
   &lt;li&gt;Windows: &lt;code&gt;.\whatsapp.exe rest&lt;/code&gt; (for REST API mode) 
    &lt;ol&gt; 
     &lt;li&gt;run &lt;code&gt;.\whatsapp.exe --help&lt;/code&gt; for more detail flags&lt;/li&gt; 
    &lt;/ol&gt; &lt;/li&gt; 
  &lt;/ol&gt; &lt;/li&gt; 
 &lt;li&gt;open &lt;code&gt;http://localhost:3000&lt;/code&gt; in browser&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Cross-Compile for Raspberry Pi (ARM)&lt;/h3&gt; 
&lt;p&gt;If you want to build for Raspberry Pi or other ARM devices without needing a C toolchain (CGO), you can use the &lt;code&gt;purego&lt;/code&gt; build tag. This will use a pure-Go SQLite implementation.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Clone this repo &lt;code&gt;git clone https://github.com/aldinokemal/go-whatsapp-web-multidevice&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Open the folder that was cloned via cmd/terminal.&lt;/li&gt; 
 &lt;li&gt;run &lt;code&gt;cd src&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Build for Raspberry Pi Zero / 1 (ARMv6):&lt;/strong&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -tags purego -o whatsapp-armv6
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Build for Raspberry Pi 2 / 3 / 4 (ARMv7 32-bit):&lt;/strong&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -tags purego -o whatsapp-armv7
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Transfer the binary to your Pi, give it execution permission (&lt;code&gt;chmod +x&lt;/code&gt;), and run it: 
  &lt;ul&gt; 
   &lt;li&gt;If you built ARMv6: &lt;code&gt;./whatsapp-armv6 rest&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;If you built ARMv7: &lt;code&gt;./whatsapp-armv7 rest&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;MCP Server (Model Context Protocol)&lt;/h3&gt; 
&lt;p&gt;MCP is not a separate mode or process — it&#39;s served by the REST server itself. Whenever &lt;code&gt;./whatsapp rest&lt;/code&gt; is running, the MCP endpoint is available at &lt;code&gt;http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&amp;lt;base-path&amp;gt;/mcp&lt;/code&gt; (default &lt;code&gt;http://localhost:3000/mcp&lt;/code&gt;) using the streamable HTTP transport. Disable it with &lt;code&gt;MCP_ENABLED=false&lt;/code&gt; or &lt;code&gt;--mcp-enabled=false&lt;/code&gt; (default: enabled).&lt;/p&gt; 
&lt;h4&gt;Available MCP Tools&lt;/h4&gt; 
&lt;p&gt;There are 5 consolidated tools; agents pick behavior via a &lt;code&gt;type&lt;/code&gt;/&lt;code&gt;action&lt;/code&gt; argument instead of one tool per operation:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;&lt;code&gt;type&lt;/code&gt; / &lt;code&gt;action&lt;/code&gt; values&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;whatsapp_send&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;text&lt;/code&gt;, &lt;code&gt;image&lt;/code&gt;, &lt;code&gt;video&lt;/code&gt;, &lt;code&gt;audio&lt;/code&gt;, &lt;code&gt;document&lt;/code&gt;, &lt;code&gt;sticker&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;contact&lt;/code&gt;, &lt;code&gt;poll&lt;/code&gt;, &lt;code&gt;link&lt;/code&gt;, &lt;code&gt;forward&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;whatsapp_message&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;react&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;revoke&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;, &lt;code&gt;mark_read&lt;/code&gt;, &lt;code&gt;star&lt;/code&gt;, &lt;code&gt;unstar&lt;/code&gt;, &lt;code&gt;download_media&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;whatsapp_chat&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;list_chats&lt;/code&gt;, &lt;code&gt;list_contacts&lt;/code&gt;, &lt;code&gt;get_messages&lt;/code&gt;, &lt;code&gt;archive&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;whatsapp_group&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;create&lt;/code&gt;, &lt;code&gt;join_with_link&lt;/code&gt;, &lt;code&gt;leave&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;participants&lt;/code&gt;, &lt;code&gt;add_participants&lt;/code&gt;, &lt;code&gt;remove_participants&lt;/code&gt;, &lt;code&gt;promote&lt;/code&gt;, &lt;code&gt;demote&lt;/code&gt;, &lt;code&gt;invite_link&lt;/code&gt;, &lt;code&gt;set_name&lt;/code&gt;, &lt;code&gt;set_topic&lt;/code&gt;, &lt;code&gt;set_settings&lt;/code&gt;, &lt;code&gt;join_requests&lt;/code&gt;, &lt;code&gt;manage_join_requests&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;whatsapp_app&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;status&lt;/code&gt;, &lt;code&gt;login_qr&lt;/code&gt;, &lt;code&gt;login_code&lt;/code&gt;, &lt;code&gt;logout&lt;/code&gt;, &lt;code&gt;reconnect&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h4&gt;Device selection&lt;/h4&gt; 
&lt;p&gt;For multi-device deployments, the &lt;code&gt;X-Device-Id&lt;/code&gt; header on the MCP client connection selects the device used by every tool call on that connection (falls back to the default device if omitted, same as REST). Any individual call can override it with an optional &lt;code&gt;device_id&lt;/code&gt; argument.&lt;/p&gt; 
&lt;h3&gt;MCP Configuration&lt;/h3&gt; 
&lt;p&gt;Point your MCP client at the &lt;code&gt;/mcp&lt;/code&gt; endpoint. It inherits the REST server&#39;s basic auth, so include the same &lt;code&gt;Authorization&lt;/code&gt; header your REST calls use:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;whatsapp&quot;: {
      &quot;url&quot;: &quot;http://localhost:3000/mcp&quot;,
      &quot;headers&quot;: {
        &quot;Authorization&quot;: &quot;Basic dXNlcjpzZWNyZXQ=&quot;,
        &quot;X-Device-Id&quot;: &quot;628123456789&quot;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;headers&lt;/code&gt; is optional: include &lt;code&gt;Authorization&lt;/code&gt; only when basic auth is configured, and &lt;code&gt;X-Device-Id&lt;/code&gt; only for multi-device setups.&lt;/p&gt; 
&lt;h4&gt;Migrating from the standalone MCP mode&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;./whatsapp mcp&lt;/code&gt; → &lt;code&gt;./whatsapp rest&lt;/code&gt; (MCP is now included automatically)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;http://localhost:8080/sse&lt;/code&gt; → &lt;code&gt;http://localhost:3000/mcp&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;40 granular tools → 5 consolidated tools (agents pick actions via the &lt;code&gt;type&lt;/code&gt;/&lt;code&gt;action&lt;/code&gt; field)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Production Mode REST (docker)&lt;/h3&gt; 
&lt;p&gt;Using Docker Hub:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --detach --publish=3000:3000 --name=whatsapp --restart=always --volume=$(docker volume create --name=whatsapp):/app/storages aldinokemal2104/go-whatsapp-web-multidevice rest --autoreply=&quot;Dont&#39;t reply this message please&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Using GitHub Container Registry:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --detach --publish=3000:3000 --name=whatsapp --restart=always --volume=$(docker volume create --name=whatsapp):/app/storages ghcr.io/aldinokemal/go-whatsapp-web-multidevice rest --autoreply=&quot;Dont&#39;t reply this message please&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Production Mode REST (docker compose)&lt;/h3&gt; 
&lt;p&gt;create &lt;code&gt;docker-compose.yml&lt;/code&gt; file with the following configuration:&lt;/p&gt; 
&lt;p&gt;Using Docker Hub:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;services:
  whatsapp:
    image: aldinokemal2104/go-whatsapp-web-multidevice
    container_name: whatsapp
    restart: always
    ports:
      - &quot;3000:3000&quot;
    volumes:
      - whatsapp:/app/storages
    command:
      - rest
      - --basic-auth=admin:admin
      - --port=3000
      - --debug=true
      - --os=Chrome
      - --account-validation=false

volumes:
  whatsapp:
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Using GitHub Container Registry:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;services:
  whatsapp:
    image: ghcr.io/aldinokemal/go-whatsapp-web-multidevice
    container_name: whatsapp
    restart: always
    ports:
      - &quot;3000:3000&quot;
    volumes:
      - whatsapp:/app/storages
    command:
      - rest
      - --basic-auth=admin:admin
      - --port=3000
      - --debug=true
      - --os=Chrome
      - --account-validation=false

volumes:
  whatsapp:
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;or with env file (Docker Hub):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;services:
  whatsapp:
    image: aldinokemal2104/go-whatsapp-web-multidevice
    container_name: whatsapp
    restart: always
    ports:
      - &quot;3000:3000&quot;
    volumes:
      - whatsapp:/app/storages
    environment:
      - APP_BASIC_AUTH=admin:admin
      - APP_PORT=3000
      - APP_DEBUG=true
      - APP_OS=Chrome
      - WHATSAPP_ACCOUNT_VALIDATION=false

volumes:
  whatsapp:
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;or with env file (GitHub Container Registry):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;services:
  whatsapp:
    image: ghcr.io/aldinokemal/go-whatsapp-web-multidevice
    container_name: whatsapp
    restart: always
    ports:
      - &quot;3000:3000&quot;
    volumes:
      - whatsapp:/app/storages
    environment:
      - APP_BASIC_AUTH=admin:admin
      - APP_PORT=3000
      - APP_DEBUG=true
      - APP_OS=Chrome
      - WHATSAPP_ACCOUNT_VALIDATION=false

volumes:
  whatsapp:
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Production Mode (binary)&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;download binary from &lt;a href=&quot;https://github.com/aldinokemal/go-whatsapp-web-multidevice/releases&quot;&gt;release&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can fork or edit this source code !&lt;/p&gt; 
&lt;h2&gt;Current API&lt;/h2&gt; 
&lt;h3&gt;MCP (Model Context Protocol) API&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Served at &lt;code&gt;/mcp&lt;/code&gt; by the REST server (streamable HTTP transport) whenever &lt;code&gt;MCP_ENABLED&lt;/code&gt; is true; with &lt;code&gt;APP_BASE_PATH&lt;/code&gt; set, the route is &lt;code&gt;&amp;lt;base-path&amp;gt;/mcp&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Available tools are listed in the &quot;Available MCP Tools&quot; section above.&lt;/li&gt; 
 &lt;li&gt;Compatible with MCP-enabled AI tools and agents&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;HTTP REST API&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check &lt;a href=&quot;https://raw.githubusercontent.com/aldinokemal/go-whatsapp-web-multidevice/main/docs/openapi.yaml&quot;&gt;docs/openapi.yaml&lt;/a&gt; for detailed API specifications.&lt;/li&gt; 
 &lt;li&gt;Use &lt;a href=&quot;https://editor.swagger.io&quot;&gt;SwaggerEditor&lt;/a&gt; to visualize the API.&lt;/li&gt; 
 &lt;li&gt;Generate HTTP clients using &lt;a href=&quot;https://openapi-generator.tech/#try&quot;&gt;openapi-generator&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Menu&lt;/th&gt; 
   &lt;th&gt;Method&lt;/th&gt; 
   &lt;th&gt;URL&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Health Check&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/health&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;List Devices&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/devices&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Add Device&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/devices&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Device Info&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Remove Device&lt;/td&gt; 
   &lt;td&gt;DELETE&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Login Device (QR)&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/login&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Login Device (Code)&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/login/code&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Logout Device&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/logout&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Reconnect Device&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/reconnect&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Device Status&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/status&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Device Webhook&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/webhook&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Device Webhook&lt;/td&gt; 
   &lt;td&gt;PATCH&lt;/td&gt; 
   &lt;td&gt;/devices/:device_id/webhook&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Login with Scan QR&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/login&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Login With Pair Code&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/login-with-code&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Passkey Pairing Status&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/passkey&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Passkey Pairing Response&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/app/passkey/response&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Passkey Pairing Confirm&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/app/passkey/confirm&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Logout&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/logout&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Reconnect&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/reconnect&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Devices&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/devices&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Connection Status&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/status&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;App Info (version, limits)&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/app/info&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User Info&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/info&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User Avatar&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/avatar&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User Change Avatar&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/user/avatar&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User Change PushName&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/user/pushname&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User My Groups*&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/my/groups&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User My Newsletter&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/my/newsletters&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User My Privacy Setting&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/my/privacy&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User My Contacts&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/my/contacts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User Check&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/check&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;User Business Profile&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/user/business-profile&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/message&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Image&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/image&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Audio&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/audio&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send File&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Video&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/video&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Sticker&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/sticker&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Contact&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/contact&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Link&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/link&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Location&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/location&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Poll / Vote&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/poll&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Presence&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/presence&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Send Chat Presence (Typing Indicator)&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/send/chat-presence&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Revoke Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/revoke&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;React Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/reaction&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Delete Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/delete&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Edit Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/update&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Read Message (DM)&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/read&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Star Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/star&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Unstar Message&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/unstar&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Download Message Media&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/message/:message_id/download&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Reject Call&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/call/reject&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Join Group With Link&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/join-with-link&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Group Info From Link&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/group/info-from-link&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Group Info&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/group/info&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Leave Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/leave&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Create Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;List Participants in Group&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/group/participants&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Add Participants in Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/participants&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Remove Participant in Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/participants/remove&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Promote Participant in Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/participants/promote&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Demote Participant in Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/participants/demote&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Export Group Participants (CSV)&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/group/participants/export&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;List Requested Participants in Group&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/group/participant-requests&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Approve Requested Participant in Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/participant-requests/approve&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Reject Requested Participant in Group&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/participant-requests/reject&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Group Photo&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/photo&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Group Name&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/name&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Group Locked&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/locked&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Group Announce&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/announce&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Group Topic&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/group/topic&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Group Invite Link&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/group/invite-link&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Unfollow Newsletter&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/newsletter/unfollow&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Newsletter Messages&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/newsletter/messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Chat List&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/chats&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Get Chat Messages&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/chat/:chat_jid/messages&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Pin Chat&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/chat/:chat_jid/pin&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Archive Chat&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/chat/:chat_jid/archive&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Set Disappearing Messages&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/chat/:chat_jid/disappearing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Chatwoot Sync History&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/chatwoot/sync&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Chatwoot Sync Status&lt;/td&gt; 
   &lt;td&gt;GET&lt;/td&gt; 
   &lt;td&gt;/chatwoot/sync/status&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;✅&lt;/td&gt; 
   &lt;td&gt;Chatwoot Reply Webhook&lt;/td&gt; 
   &lt;td&gt;POST&lt;/td&gt; 
   &lt;td&gt;/chatwoot/webhook&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;pre&gt;&lt;code&gt;✅ = Available
❌ = Not Available Yet
* = Has known limitations (see notes below)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;*User My Groups&lt;/code&gt;: Returns a maximum of 500 groups due to WhatsApp protocol limitation. This is enforced by WhatsApp servers, not this API. See &lt;a href=&quot;https://github.com/tulir/whatsmeow/raw/main/group.go&quot;&gt;whatsmeow source&lt;/a&gt; for details.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;/health&lt;/code&gt; is public and always registered at the root path, even when &lt;code&gt;APP_BASE_PATH&lt;/code&gt; is set.&lt;/li&gt; 
 &lt;li&gt;Chatwoot routes are registered only when &lt;code&gt;CHATWOOT_ENABLED=true&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;User Interface&lt;/h2&gt; 
&lt;h3&gt;MCP UI&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Setup MCP (tested in cursor) &lt;img src=&quot;https://i.ibb.co/vCg4zNWt/mcpsetup.png&quot; alt=&quot;Setup MCP&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;Test MCP &lt;img src=&quot;https://i.ibb.co/B2LX38DW/mcptest.png&quot; alt=&quot;Test MCP&quot; /&gt;&lt;/li&gt; 
 &lt;li&gt;Successfully setup MCP &lt;img src=&quot;https://i.ibb.co/1fCx0Myc/mcpsuccess.png&quot; alt=&quot;Success MCP&quot; /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Web dashboard (gowa-ui)&lt;/h3&gt; 
&lt;p&gt;The dashboard lives in its own repository: &lt;a href=&quot;https://github.com/aldinokemal/gowa-ui&quot;&gt;aldinokemal/gowa-ui&lt;/a&gt;. Each gowa-ui release publishes a single self-contained &lt;code&gt;gowa-ui.html&lt;/code&gt;; the server downloads the latest release at startup (and every &lt;code&gt;APP_UI_UPDATE_INTERVAL&lt;/code&gt;, default 3h), verifies its sha256 digest, caches it under &lt;code&gt;storages/ui/&lt;/code&gt;, and serves it at &lt;code&gt;/&lt;/code&gt; behind basic auth.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Setting&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
   &lt;th&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_ENABLED&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Serve the dashboard at &lt;code&gt;/&lt;/code&gt;; &lt;code&gt;false&lt;/code&gt; returns a JSON banner (API-only)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_AUTO_UPDATE&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Download/refresh from GitHub; disable for air-gapped deployments&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_REPO&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;aldinokemal/gowa-ui&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Repository the updater follows — always its latest release, not a version pin&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_ASSET_NAME&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;gowa-ui.html&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Release asset filename to download&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_UPDATE_INTERVAL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;3h&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;How often to check &lt;code&gt;releases/latest&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_GITHUB_TOKEN&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;(empty)&lt;/td&gt; 
   &lt;td&gt;Optional token to raise the GitHub API rate limit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;APP_UI_ASSET_SHA256&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;(empty)&lt;/td&gt; 
   &lt;td&gt;Supply-chain pin: refuse any dashboard whose sha256 differs&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Trust model: the release digest proves the download matches what GitHub advertises, not who published it. Operators who audit a specific build can pin it with &lt;code&gt;APP_UI_ASSET_SHA256&lt;/code&gt; (each release ships a &lt;code&gt;.sha256&lt;/code&gt; asset — this is the only setting that pins an exact build), point &lt;code&gt;APP_UI_REPO&lt;/code&gt; at a fork they control (the updater still tracks that repo&#39;s latest release), or pre-seed the cache and disable auto-update entirely.&lt;/p&gt; 
&lt;p&gt;Air-gapped servers: place a downloaded &lt;code&gt;gowa-ui.html&lt;/code&gt; at &lt;code&gt;storages/ui/index.html&lt;/code&gt; and set &lt;code&gt;APP_UI_AUTO_UPDATE=false&lt;/code&gt;. The dashboard can also be self-hosted anywhere static and pointed at this server&#39;s URL (see the gowa-ui readme).&lt;/p&gt; 
&lt;h3&gt;Mac OS NOTE&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Please do this if you have an error (invalid flag in pkg-config --cflags: -Xpreprocessor) &lt;code&gt;export CGO_CFLAGS_ALLOW=&quot;-Xpreprocessor&quot;&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Important&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;This project is unofficial and not affiliated with WhatsApp.&lt;/li&gt; 
 &lt;li&gt;Please use official WhatsApp API to avoid any issues.&lt;/li&gt; 
&lt;/ul&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>putyy/res-downloader</title>
      <link>https://github.com/putyy/res-downloader</link>
      <description>&lt;p&gt;视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载!&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/putyy/res-downloader&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/putyy/res-downloader/master/build/appicon.png&quot; width=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;h1&gt;res-downloader&lt;/h1&gt; 
 &lt;h4&gt;📖 中文 | &lt;a href=&quot;https://github.com/putyy/res-downloader/raw/master/README-EN.md&quot;&gt;English&lt;/a&gt;&lt;/h4&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/putyy/res-downloader/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/putyy/res-downloader&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/putyy/res-downloader/fork&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/forks/putyy/res-downloader&quot; alt=&quot;GitHub forks&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/putyy/res-downloader/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/putyy/res-downloader&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/putyy/res-downloader/total&quot; alt=&quot;GitHub All Releases&quot; /&gt; &lt;a href=&quot;https://github.com/putyy/res-downloader/raw/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/putyy/res-downloader&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📢 项目状态&lt;/h2&gt; 
&lt;p&gt;首先感谢大家对本项目的关注和支持 ❤️&lt;/p&gt; 
&lt;p&gt;由于个人事务原因，近期能够投入到项目维护的时间比较有限，因此Issue回复、PR Review以及版本发布的速度可能会比以前慢一些。&lt;/p&gt; 
&lt;p&gt;在此欢迎社区开发者一起参与建设，如果你在使用过程中发现问题，或者有功能改进建议，欢迎提交Issue；如果愿意贡献代码，也非常欢迎提交 Pull Request。&lt;/p&gt; 
&lt;p&gt;提交代码前请阅读： &lt;a href=&quot;https://raw.githubusercontent.com/putyy/res-downloader/master/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;非常感谢每一位使用者、反馈者和贡献者的支持！！！&lt;/p&gt; 
&lt;h3&gt;🎉 爱享素材下载器&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;一款基于 Go + &lt;a href=&quot;https://github.com/wailsapp/wails&quot;&gt;Wails&lt;/a&gt; 的跨平台资源下载工具，简洁易用，支持多种资源嗅探与下载。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;✨ 功能特色&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;🚀 &lt;strong&gt;简单易用&lt;/strong&gt;：操作简单，界面清晰美观&lt;/li&gt; 
 &lt;li&gt;🖥️ &lt;strong&gt;多平台支持&lt;/strong&gt;：Windows / macOS / Linux&lt;/li&gt; 
 &lt;li&gt;🌐 &lt;strong&gt;多资源类型支持&lt;/strong&gt;：视频 / 音频 / 图片 / m3u8 / 直播流等&lt;/li&gt; 
 &lt;li&gt;📱 &lt;strong&gt;平台兼容广泛&lt;/strong&gt;：支持微信视频号、小程序、抖音、快手、小红书、酷狗音乐、QQ音乐等&lt;/li&gt; 
 &lt;li&gt;🌍 &lt;strong&gt;代理抓包&lt;/strong&gt;：支持设置代理获取受限网络下的资源&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📚 文档 &amp;amp; 版本&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;📘 &lt;a href=&quot;https://res.putyy.com/&quot;&gt;在线文档&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;💬 &lt;a href=&quot;https://www.putyy.com/app/admin/upload/img/20250418/6801d9554dc7.webp&quot;&gt;加入交流群&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;🧩 &lt;a href=&quot;https://github.com/putyy/res-downloader/releases&quot;&gt;最新版&lt;/a&gt; ｜ &lt;a href=&quot;https://github.com/putyy/resd-mini&quot;&gt;Mini版 使用默认浏览器展示UI&lt;/a&gt; ｜ &lt;a href=&quot;https://github.com/putyy/res-downloader/tree/old&quot;&gt;Electron旧版 支持Win7&lt;/a&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;&lt;em&gt;群满时可加微信 &lt;code&gt;AmorousWorld&lt;/code&gt;，请备注“github”&lt;/em&gt;&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🧩 下载地址&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;🆕 &lt;a href=&quot;https://github.com/putyy/res-downloader/releases&quot;&gt;GitHub 下载&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;🆕 &lt;a href=&quot;https://wwjv.lanzoum.com/b04wgtfyb&quot;&gt;蓝奏云下载（密码：9vs5）&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;⚠️ &lt;em&gt;Win7 用户请下载 &lt;code&gt;2.3.0&lt;/code&gt; 版本&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🖼️ 预览&lt;/h2&gt; 
&lt;h2&gt;&lt;img src=&quot;https://raw.githubusercontent.com/putyy/res-downloader/master/docs/images/show.webp&quot; alt=&quot;预览&quot; /&gt;&lt;/h2&gt; 
&lt;h2&gt;🚀 使用方法&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;请按以下步骤操作以正确使用软件：&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ol&gt; 
 &lt;li&gt;安装时务必 &lt;strong&gt;允许安装证书文件&lt;/strong&gt; 并 &lt;strong&gt;允许网络访问&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;打开软件 → 首页左上角点击 &lt;strong&gt;“启动代理”&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;选择要获取的资源类型（默认全部）&lt;/li&gt; 
 &lt;li&gt;在外部打开资源页面（如视频号、小程序、网页等）&lt;/li&gt; 
 &lt;li&gt;返回软件首页，即可看到资源列表&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;❓ 常见问题&lt;/h2&gt; 
&lt;h3&gt;📺 m3u8 视频资源&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;在线预览：&lt;a href=&quot;https://m3u8play.com/&quot;&gt;m3u8play&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;视频下载：&lt;a href=&quot;https://m3u8-down.gowas.cn/&quot;&gt;m3u8-down&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;📡 直播流资源&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;推荐使用 &lt;a href=&quot;https://obsproject.com/&quot;&gt;OBS&lt;/a&gt; 进行录制（教程请百度）&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🐢 下载慢、大文件失败？&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;推荐工具： 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.neatdownloadmanager.com/index.php/en/&quot;&gt;Neat Download Manager&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://motrix.app/download&quot;&gt;Motrix&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;视频号资源下载后可在操作项点击 &lt;code&gt;视频解密（视频号）&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🧩 软件无法拦截资源？&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;检查是否正确设置系统代理：&lt;br /&gt; 地址：127.0.0.1 端口：8899&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🌐 关闭软件后无法上网？&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;手动关闭系统代理设置&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🧠 更多问题&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/putyy/res-downloader/issues&quot;&gt;GitHub Issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://s.gowas.cn/d/4089&quot;&gt;爱享论坛讨论帖&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;💡 实现原理 &amp;amp; 初衷&lt;/h2&gt; 
&lt;p&gt;本工具通过代理方式实现网络抓包，并筛选可用资源。与 Fiddler、Charles、浏览器 DevTools 原理类似，但对资源进行了更友好的筛选、展示和处理，大幅度降低了使用门槛，更适合大众用户使用。&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⚠️ 免责声明&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;本软件仅供学习与研究用途，禁止用于任何商业或违法用途。&lt;br /&gt; 如因此产生的任何法律责任，概与作者无关！&lt;/p&gt; 
&lt;/blockquote&gt;</description>
      
    </item>
    
    <item>
      <title>mostlygeek/llama-swap</title>
      <link>https://github.com/mostlygeek/llama-swap</link>
      <description>&lt;p&gt;Reliable model swapping for any local OpenAI/Anthropic compatible server - llama.cpp, vllm, etc&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/mostlygeek/llama-swap/main/docs/assets/hero4.webp&quot; alt=&quot;llama-swap header image&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/mostlygeek/llama-swap/total&quot; alt=&quot;GitHub Downloads (all assets, all releases)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/mostlygeek/llama-swap/go-ci.yml&quot; alt=&quot;GitHub Actions Workflow Status&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/stars/mostlygeek/llama-swap&quot; alt=&quot;GitHub Repo stars&quot; /&gt;&lt;/p&gt; 
&lt;h1&gt;llama-swap&lt;/h1&gt; 
&lt;p&gt;Run multiple generative AI models on your machine and hot-swap between them on demand. llama-swap works with any OpenAI and Anthropic API compatible server and is used by thousands of people to power their local AI workflows.&lt;/p&gt; 
&lt;p&gt;Built in Go for performance and simplicity, llama-swap has zero dependencies and is incredibly easy to set up. Get started in minutes - just one binary and one configuration file.&lt;/p&gt; 
&lt;h2&gt;Features:&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;✅ Easy to deploy and configure: one binary, one configuration file. no external dependencies&lt;/li&gt; 
 &lt;li&gt;✅ On-demand model switching for many local AI servers (llama.cpp + forks, vllm, stable-diffusion.cpp, audio.cpp, ComfyUI, etc.) 
  &lt;ul&gt; 
   &lt;li&gt;future proof, upgrade your inference servers at any time.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ OpenAI API supported endpoints: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;v1/completions&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/chat/completions&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/responses&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/embeddings&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/models&lt;/code&gt; - list available models&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/audio/speech&lt;/code&gt; (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/36&quot;&gt;#36&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/audio/transcriptions&lt;/code&gt; (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/41#issuecomment-2722637867&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/audio/voices&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/images/generations&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/images/edits&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ Anthropic API supported endpoints: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;v1/messages&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;v1/messages/count_tokens&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ llama-server (llama.cpp) supported endpoints 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;v1/rerank&lt;/code&gt;, &lt;code&gt;v1/reranking&lt;/code&gt;, &lt;code&gt;/rerank&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/infill&lt;/code&gt; - for code infilling&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/completion&lt;/code&gt; - for completion endpoint&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/models&lt;/code&gt; - list available models. same behavior as &lt;code&gt;v1/models&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/props&lt;/code&gt; - requires &lt;code&gt;?model={model_id}&lt;/code&gt; query parameter to be provided. The autoload parameter is not supported and will be ignored.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ SDAPI via &lt;a href=&quot;https://github.com/leejet/stable-diffusion.cpp/tree/master/examples/server&quot;&gt;stable-diffusion.cpp&#39;s server&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;/sdapi/v1/txt2img&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/sdapi/v1/img2img&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/sdapi/v1/loras&lt;/code&gt; - requires &lt;code&gt;model&lt;/code&gt; in request body to fetch the correct loras&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ &lt;a href=&quot;https://github.com/0xShug0/audio.cpp&quot;&gt;audio.cpp&lt;/a&gt; supported &lt;a href=&quot;https://github.com/0xShug0/audio.cpp/raw/main/app/server/README.md#post-v1tasksrun&quot;&gt;extra endpoints&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;/audioapi/v1/tasks/run&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ &lt;code&gt;/comfyui/&lt;/code&gt; - ComfyUI custom endpoint (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/1001&quot;&gt;#1001&lt;/a&gt;) for more reliable swapping&lt;/li&gt; 
 &lt;li&gt;✅ llama-swap API 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;/ui&lt;/code&gt; - web UI&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/upstream/:model_id&lt;/code&gt; - direct access to upstream server (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/pull/31&quot;&gt;demo&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/running&lt;/code&gt; - list currently running models (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/61&quot;&gt;#61&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;POST /api/models/unload&lt;/code&gt; - manually unload all running models (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/58&quot;&gt;#58&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;POST /api/models/unload/:model_id&lt;/code&gt; - unload a specific model&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;GET /api/profiles&lt;/code&gt; - list configured profiles and the active selection&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;PUT /api/profiles/active&lt;/code&gt; - activate a profile or select none&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/logs&lt;/code&gt; - remote log monitoring 
    &lt;ul&gt; 
     &lt;li&gt;&lt;code&gt;GET /logs&lt;/code&gt; returns buffered plain text logs. 
      &lt;ul&gt; 
       &lt;li&gt;If &lt;code&gt;Accept: text/html&lt;/code&gt; is sent, &lt;code&gt;/logs&lt;/code&gt; redirects to &lt;code&gt;/ui/&lt;/code&gt;.&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;GET /logs/stream&lt;/code&gt; keeps the connection open for live log streaming. 
      &lt;ul&gt; 
       &lt;li&gt;Stream endpoints send buffered history first by default; add &lt;code&gt;?no-history&lt;/code&gt; to stream only new lines.&lt;/li&gt; 
      &lt;/ul&gt; &lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;GET /logs/stream/proxy&lt;/code&gt; streams proxy logs only.&lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;GET /logs/stream/upstream&lt;/code&gt; streams upstream process logs only.&lt;/li&gt; 
     &lt;li&gt;&lt;code&gt;GET /logs/stream/{model_id}&lt;/code&gt; streams logs for one model (including IDs with slashes, like &lt;code&gt;author/model&lt;/code&gt;).&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/health&lt;/code&gt; - just returns &quot;OK&quot;&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;/metrics&lt;/code&gt; - system and GPU metrics for prometheus&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;✅ API Key support - define keys to restrict access to API endpoints&lt;/li&gt; 
 &lt;li&gt;✅ Customization 
  &lt;ul&gt; 
   &lt;li&gt;Switch model ID routing at runtime with profiles&lt;/li&gt; 
   &lt;li&gt;Run concurrent models with a custom DSL swap matrix (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/643&quot;&gt;#643&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;Automatic unloading of models after timeout by setting a &lt;code&gt;ttl&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Docker and Podman support using &lt;code&gt;cmd&lt;/code&gt; and &lt;code&gt;cmdStop&lt;/code&gt; together&lt;/li&gt; 
   &lt;li&gt;Preload models on startup with &lt;code&gt;hooks&lt;/code&gt; (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/pull/235&quot;&gt;#235&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;Apply filters to requests to control inference with &lt;code&gt;stripParams&lt;/code&gt;, &lt;code&gt;setParams&lt;/code&gt; and &lt;code&gt;setParamsByID&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Web UI&lt;/h3&gt; 
&lt;p&gt;llama-swap includes a real time web interface with a playground for testing out all sorts of local models:&lt;/p&gt; 
&lt;img width=&quot;1094&quot; height=&quot;667&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/a79b3cea-5ee1-45f1-8db9-5f5331690e64&quot; /&gt; 
&lt;p&gt;View detailed token metrics:&lt;/p&gt; 
&lt;img width=&quot;1090&quot; height=&quot;672&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/145f4ece-af2f-4a45-a3c1-45ae5d3c7e7f&quot; /&gt; 
&lt;p&gt;Inspect request and responses:&lt;/p&gt; 
&lt;img width=&quot;1078&quot; height=&quot;668&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/947cda4f-9aa1-4fa5-a550-5c469968c1d9&quot; /&gt; 
&lt;p&gt;Manually load and unload models:&lt;/p&gt; 
&lt;img width=&quot;1088&quot; height=&quot;659&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/b6b850f3-c5b0-4c14-ba90-be2de25b51c7&quot; /&gt; 
&lt;p&gt;Real time log streaming:&lt;/p&gt; 
&lt;img width=&quot;1087&quot; height=&quot;668&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/9bb0c362-862c-4e68-820c-4c977fc9de4e&quot; /&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;llama-swap can be installed in multiple ways&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Docker&lt;/li&gt; 
 &lt;li&gt;Homebrew (macOS and Linux)&lt;/li&gt; 
 &lt;li&gt;MacPorts (macOS)&lt;/li&gt; 
 &lt;li&gt;WinGet&lt;/li&gt; 
 &lt;li&gt;From release binaries&lt;/li&gt; 
 &lt;li&gt;From source&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Docker Install (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/pkgs/container/llama-swap&quot;&gt;download images&lt;/a&gt;)&lt;/h3&gt; 
&lt;p&gt;Two types of container images are built nightly for llama-swap:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;A unified container with llama-server, ik-llama-server, stable-diffusion.cpp, whisper.cpp and llama-swap built from source. This is only available for cuda and vulkan but has more capabilities. This one is recommended for use.&lt;/li&gt; 
 &lt;li&gt;A legacy image that is based on llama.cpp&#39;s images and llama-swap copied into the container. Use this one if you prefer to stay close to llama.cpp&#39;s container images.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h4&gt;Unified container (Recommended)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;$ docker pull ghcr.io/mostlygeek/llama-swap:unified-cuda

# run with a custom configuration and models directory
$ docker run -it --rm --runtime nvidia -p 9292:8080 \
 -v /path/to/models:/models \
 -v /path/to/custom/config.yaml:/etc/llama-swap/config/config.yaml \
 ghcr.io/mostlygeek/llama-swap:unified-cuda
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Legacy container&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;$ docker pull ghcr.io/mostlygeek/llama-swap:cuda

# run with a custom configuration and models directory
$ docker run -it --rm --runtime nvidia -p 9292:8080 \
 -v /path/to/models:/models \
 -v /path/to/custom/config.yaml:/app/config.yaml \
 ghcr.io/mostlygeek/llama-swap:cuda
&lt;/code&gt;&lt;/pre&gt; 
&lt;details&gt; 
 &lt;summary&gt; more examples &lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;# pull latest images per platform
docker pull ghcr.io/mostlygeek/llama-swap:cpu
docker pull ghcr.io/mostlygeek/llama-swap:cuda
docker pull ghcr.io/mostlygeek/llama-swap:vulkan
docker pull ghcr.io/mostlygeek/llama-swap:intel
docker pull ghcr.io/mostlygeek/llama-swap:musa

# tagged llama-swap, platform and llama-server version images
docker pull ghcr.io/mostlygeek/llama-swap:v166-cuda-b6795

# non-root cuda
docker pull ghcr.io/mostlygeek/llama-swap:cuda-non-root

&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;h3&gt;Homebrew Install (macOS/Linux)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;brew tap mostlygeek/llama-swap
brew install llama-swap
llama-swap --config path/to/config.yaml --listen localhost:8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;MacPorts (macOS)&lt;/h3&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;Maintained by MacPorts community - &lt;a href=&quot;https://ports.macports.org/port/llama-swap&quot;&gt;llama-swap port&lt;/a&gt;. It is not an official part of llama-swap.&lt;/p&gt; 
&lt;/div&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo port install llama-swap
llama-swap --config path/to/config.yaml --listen localhost:8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;WinGet Install (Windows)&lt;/h3&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;WinGet is maintained by community contributor &lt;a href=&quot;https://github.com/Dvd-Znf&quot;&gt;Dvd-Znf&lt;/a&gt; (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/327&quot;&gt;#327&lt;/a&gt;). It is not an official part of llama-swap.&lt;/p&gt; 
&lt;/div&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;# install
C:\&amp;gt; winget install llama-swap

# upgrade
C:\&amp;gt; winget upgrade llama-swap
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Pre-built Binaries&lt;/h3&gt; 
&lt;p&gt;Binaries are available on the &lt;a href=&quot;https://github.com/mostlygeek/llama-swap/releases&quot;&gt;release&lt;/a&gt; page for Linux, Mac, Windows and FreeBSD.&lt;/p&gt; 
&lt;h3&gt;Building from source&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Building requires Go and Node.js (for UI).&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;git clone https://github.com/mostlygeek/llama-swap.git&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;make clean all&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;look in the &lt;code&gt;build/&lt;/code&gt; subdirectory for the llama-swap binary&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# minimum viable config.yaml

models:
  model1:
    cmd: llama-server --port ${PORT} --model /path/to/model.gguf
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;That&#39;s all you need to get started:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;code&gt;models&lt;/code&gt; - holds all model configurations&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;model1&lt;/code&gt; - the ID used in API calls&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;cmd&lt;/code&gt; - the command to run to start the server.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;${PORT}&lt;/code&gt; - an automatically assigned port number&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Almost all configuration settings are optional and can be added one step at a time:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Advanced features 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;matrix&lt;/code&gt; to run concurrent models with a custom swap logic DSL&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;hooks&lt;/code&gt; to run things on startup&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;macros&lt;/code&gt; reusable snippets&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Model customization 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;ttl&lt;/code&gt; to automatically unload models&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;unloadTimeout&lt;/code&gt; to tune graceful unloads (manual, API and &lt;code&gt;ttl&lt;/code&gt; expiry)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;aliases&lt;/code&gt; to use familiar model names (e.g., &quot;gpt-4o-mini&quot;)&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;env&lt;/code&gt; to pass custom environment variables to inference servers&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;cmdStop&lt;/code&gt; gracefully stop Docker/Podman containers&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;useModelName&lt;/code&gt; to override model names sent to upstream servers&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;${PORT}&lt;/code&gt; automatic port variables for dynamic port assignment&lt;/li&gt; 
   &lt;li&gt;&lt;code&gt;filters&lt;/code&gt; rewrite parts of requests before sending to the upstream server&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/mostlygeek/llama-swap/main/docs/configuration.md&quot;&gt;configuration documentation&lt;/a&gt; for all options.&lt;/p&gt; 
&lt;h2&gt;How does llama-swap work?&lt;/h2&gt; 
&lt;p&gt;When a request is made to an OpenAI compatible endpoint, llama-swap will extract the &lt;code&gt;model&lt;/code&gt; value and load the appropriate server configuration to serve it. If the wrong upstream server is running, it will be replaced with the correct one. This is where the &quot;swap&quot; part comes in. The upstream server is automatically swapped to handle the request correctly.&lt;/p&gt; 
&lt;p&gt;In the most basic configuration llama-swap handles one model at a time. For more advanced use cases, using a &lt;code&gt;matrix&lt;/code&gt; allows multiple models to be loaded at the same time. You have complete control over how your system resources are used.&lt;/p&gt; 
&lt;h2&gt;Reverse Proxy Configuration (nginx)&lt;/h2&gt; 
&lt;p&gt;If you deploy llama-swap behind nginx, disable response buffering for streaming endpoints. By default, nginx buffers responses which breaks Server‑Sent Events (SSE) and streaming chat completion. (&lt;a href=&quot;https://github.com/mostlygeek/llama-swap/issues/236&quot;&gt;#236&lt;/a&gt;)&lt;/p&gt; 
&lt;p&gt;Recommended nginx configuration snippets:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-nginx&quot;&gt;# SSE for UI events/logs
location /api/events {
    proxy_pass http://your-llama-swap-backend;
    proxy_buffering off;
    proxy_cache off;
}

# Streaming chat completions (stream=true)
location /v1/chat/completions {
    proxy_pass http://your-llama-swap-backend;
    proxy_buffering off;
    proxy_cache off;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;As a safeguard, llama-swap also sets &lt;code&gt;X-Accel-Buffering: no&lt;/code&gt; on SSE responses. However, explicitly disabling &lt;code&gt;proxy_buffering&lt;/code&gt; at your reverse proxy is still recommended for reliable streaming behavior.&lt;/p&gt; 
&lt;h2&gt;Monitoring Logs on the CLI&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# sends up to the last 10KB of logs
$ curl http://host/logs

# streams combined logs
curl -Ns http://host/logs/stream

# stream llama-swap&#39;s proxy status logs
curl -Ns http://host/logs/stream/proxy

# stream logs from upstream processes that llama-swap loads
curl -Ns http://host/logs/stream/upstream

# stream logs only from a specific model
curl -Ns http://host/logs/stream/{model_id}

# stream and filter logs with linux pipes
curl -Ns http://host/logs/stream | grep &#39;eval time&#39;

# appending ?no-history will disable sending buffered history first
curl -Ns &#39;http://host/logs/stream?no-history&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Do I need to use llama.cpp&#39;s server (llama-server)?&lt;/h2&gt; 
&lt;p&gt;Any OpenAI compatible server would work. llama-swap was originally designed for llama-server and it is the best supported.&lt;/p&gt; 
&lt;p&gt;For Python based inference servers like vllm or tabbyAPI it is recommended to run them via podman or docker. This provides clean environment isolation as well as responding correctly to &lt;code&gt;SIGTERM&lt;/code&gt; signals for proper shutdown.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>kenn-io/agentsview</title>
      <link>https://github.com/kenn-io/agentsview</link>
      <description>&lt;p&gt;Local-first session search, analytics, insights, and token use statistics for coding agents, supporting Claude Code, Codex, and more than 20 other agents.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;agentsview&lt;/h1&gt; 
&lt;p&gt;Browse, search, and track costs across all your AI coding agents. One binary, no accounts, everything local.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://agentsview.io/assets/generated/screenshots/dashboard.png&quot; alt=&quot;Analytics dashboard&quot; width=&quot;720&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# macOS / Linux
curl -fsSL https://agentsview.io/install.sh | bash

# Windows
powershell -ExecutionPolicy ByPass -c &quot;irm https://agentsview.io/install.ps1 | iex&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or download the &lt;strong&gt;desktop app&lt;/strong&gt; (macOS / Windows) from &lt;a href=&quot;https://github.com/kenn-io/agentsview/releases&quot;&gt;GitHub Releases&lt;/a&gt; or via homebrew: &lt;code&gt;brew install --cask agentsview&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Or run the published Docker image:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --rm -p 127.0.0.1:8080:8080 \
  -v agentsview-data:/data \
  -v &quot;$HOME/.claude/projects:/agents/claude:ro&quot; \
  -v &quot;$HOME/.forge:/agents/forge:ro&quot; \
  -e CLAUDE_PROJECTS_DIR=/agents/claude \
  -e FORGE_DIR=/agents/forge \
  ghcr.io/kenn-io/agentsview:latest
&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;agentsview serve           # start the server in the foreground
agentsview daemon start    # start the writable SQLite daemon
agentsview daemon status   # show daemon status
agentsview daemon restart  # restart from current configuration
agentsview daemon stop     # stop the writable daemon
agentsview session list    # read from the daemon if warm, otherwise SQLite
agentsview usage daily     # print daily cost summary
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On first run, agentsview discovers sessions from every supported agent on your machine, syncs them into a local SQLite database, and serves a web UI at &lt;code&gt;http://127.0.0.1:8080&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;For Devin CLI, point &lt;code&gt;DEVIN_DIR&lt;/code&gt; or &lt;code&gt;devin_dirs&lt;/code&gt; at the local root that contains &lt;code&gt;cli/&lt;/code&gt; — for example &lt;code&gt;~/Library/Application Support/devin&lt;/code&gt; on macOS, &lt;code&gt;~/.local/share/devin&lt;/code&gt; on Linux, or a redacted path like &lt;code&gt;.../Application Support/devin&lt;/code&gt;. AgentsView reads session data under &lt;code&gt;&amp;lt;root&amp;gt;/cli/...&lt;/code&gt; and intentionally ignores copied config or OAuth paths. Do not paste tokens, OAuth files, or other secrets into bug reports.&lt;/p&gt; 
&lt;p&gt;Claude and Codex sources can also be configured as &lt;code&gt;s3://&lt;/code&gt; roots, so a central AgentsView instance can read sessions that other machines push to S3-compatible object storage. Add those roots to &lt;code&gt;claude_project_dirs&lt;/code&gt; or &lt;code&gt;codex_sessions_dirs&lt;/code&gt;; AgentsView lists object metadata and only downloads changed sessions during sync. S3 change detection uses size, modified time, and available object fingerprints such as ETag, version ID, or checksums.&lt;/p&gt; 
&lt;p&gt;The desktop app and freshness-sensitive CLI commands share a detached local daemon. Read-only CLI commands attach to it when it is already running, but fall back to direct read-only SQLite on a cold archive so one-off scripts stay fast. Commands that need fresh data or need to write, such as &lt;code&gt;sync&lt;/code&gt;, &lt;code&gt;usage&lt;/code&gt;, &lt;code&gt;token-use&lt;/code&gt;, &lt;code&gt;pg push&lt;/code&gt;, and &lt;code&gt;duckdb push&lt;/code&gt;, auto-start the daemon when needed.&lt;/p&gt; 
&lt;p&gt;Use &lt;code&gt;agentsview daemon start&lt;/code&gt; when you want to start the writable SQLite daemon explicitly. It loads the normal effective configuration from &lt;code&gt;config.toml&lt;/code&gt; and supported environment variables; &lt;code&gt;daemon start&lt;/code&gt; and &lt;code&gt;daemon restart&lt;/code&gt; accept no serve-specific flags. Background daemons self-exit after an idle period unless a client request or daemon-owned job is active.&lt;/p&gt; 
&lt;p&gt;The existing &lt;code&gt;agentsview serve --background&lt;/code&gt;, &lt;code&gt;agentsview serve status&lt;/code&gt;, and &lt;code&gt;agentsview serve stop&lt;/code&gt; commands remain available. Use &lt;code&gt;serve --background&lt;/code&gt; when a one-off daemon needs a serve-only flag, such as &lt;code&gt;--no-sync&lt;/code&gt; or an unauthenticated non-loopback &lt;code&gt;--host&lt;/code&gt; override.&lt;/p&gt; 
&lt;h2&gt;Remote / forwarded access&lt;/h2&gt; 
&lt;p&gt;agentsview binds to loopback and validates the request &lt;code&gt;Host&lt;/code&gt; header to guard against DNS-rebinding attacks. When you reach it through SSH port-forwarding, a reverse proxy, or a remote dev environment (exe.dev, Codespaces, Coder, WSL2), the browser sends a &lt;code&gt;Host&lt;/code&gt; that the server does not recognize, so API requests such as &lt;code&gt;/api/v1/settings&lt;/code&gt; are rejected with &lt;code&gt;403 Forbidden&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;To fix this, restart the server with &lt;code&gt;--public-url&lt;/code&gt; set to the exact origin you open in the browser:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Browser opens http://127.0.0.1:18080 via `ssh -L 18080:127.0.0.1:8080 host`
agentsview serve --public-url http://127.0.0.1:18080

# Browser opens a forwarded hostname
agentsview serve --public-url https://your-workspace.exe.dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Use &lt;code&gt;--public-origin&lt;/code&gt; (repeatable or comma-separated) to trust additional browser origins. If you expose the UI beyond loopback, also enable &lt;code&gt;--require-auth&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Docker&lt;/h2&gt; 
&lt;p&gt;The container image defaults to local &lt;code&gt;agentsview serve&lt;/code&gt;. Set &lt;code&gt;PG_SERVE=1&lt;/code&gt; to switch the startup command to &lt;code&gt;agentsview pg serve&lt;/code&gt; instead.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;docker-compose.prod.yaml&lt;/code&gt; is included as a production example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose.prod.yaml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The included compose file persists the agentsview data directory in a named volume and mounts Claude, Codex, Forge, and OpenCode session roots read-only. The container runs as root, so prefer a named volume for &lt;code&gt;/data&lt;/code&gt; over a host bind mount; if you do bind-mount, pre-create the directory with the desired ownership to avoid root-owned files in your home directory.&lt;/p&gt; 
&lt;p&gt;The examples publish the UI on loopback only (&lt;code&gt;127.0.0.1&lt;/code&gt;). If you need to expose it beyond localhost, enable &lt;code&gt;--require-auth&lt;/code&gt; and publish the port intentionally.&lt;/p&gt; 
&lt;p&gt;Important: a containerized agentsview instance can only discover agent sessions from directories you explicitly mount into the container. If you do not mount an agent&#39;s session directory and point the matching env var at it, that agent will not appear in the UI.&lt;/p&gt; 
&lt;p&gt;Example PostgreSQL-backed startup:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --rm -p 127.0.0.1:8080:8080 \
  -e PG_SERVE=1 \
  -e AGENTSVIEW_PG_URL=&#39;postgres://user:password@postgres.example.com:5432/agentsview?sslmode=require&#39; \
  ghcr.io/kenn-io/agentsview:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Example DuckDB mirror startup:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Populate /data/sessions.duckdb from the mounted SQLite archive.
docker run --rm \
  -v agentsview-data:/data \
  -v &quot;$HOME/.claude/projects:/agents/claude:ro&quot; \
  -e CLAUDE_PROJECTS_DIR=/agents/claude \
  ghcr.io/kenn-io/agentsview:latest duckdb push --full

# Serve the populated mirror read-only.
docker run --rm -p 127.0.0.1:8080:8080 \
  -v agentsview-data:/data \
  ghcr.io/kenn-io/agentsview:latest duckdb serve
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Example Quack startup:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Expose the local DuckDB mirror over Quack from the host/container.
QUACK_TOKEN=&quot;$(openssl rand -base64 32)&quot;
docker run --rm -p 127.0.0.1:9494:9494 \
  -v agentsview-data:/data \
  ghcr.io/kenn-io/agentsview:latest \
  duckdb quack serve \
    --bind quack:0.0.0.0:9494 \
    --token &quot;$QUACK_TOKEN&quot; \
    --allow-insecure

# Serve the web UI from a remote Quack endpoint.
# The client url uses the native quack:HOST:PORT form; the Quack extension
# does not accept quack:http:// or quack:https:// urls. A non-loopback host
# needs --allow-insecure.
docker run --rm -p 127.0.0.1:8080:8080 \
  -e AGENTSVIEW_DUCKDB_URL=&#39;quack:duckdb.example.com:9494&#39; \
  -e AGENTSVIEW_DUCKDB_TOKEN=&quot;$QUACK_TOKEN&quot; \
  ghcr.io/kenn-io/agentsview:latest duckdb serve --allow-insecure
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Keep Quack on loopback or behind TLS. Plain HTTP Quack on a non-loopback bind requires &lt;code&gt;--allow-insecure&lt;/code&gt; and should only be used behind a trusted tunnel or reverse proxy.&lt;/p&gt; 
&lt;h2&gt;Token Usage and Cost Tracking&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;agentsview usage&lt;/code&gt; is a fast, local replacement for ccusage and similar tools. It tracks token consumption and compute costs across &lt;strong&gt;all&lt;/strong&gt; your coding agents -- not just Claude Code. Because session data is already indexed in SQLite, queries are over 100x faster than tools that re-parse raw session files on every run.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Daily cost summary (default: last 30 days)
agentsview usage daily

# Per-model breakdown
agentsview usage daily --breakdown

# Filter by agent and date range
agentsview usage daily --agent claude --since 2026-04-01

# One-line summary for shell prompts / status bars
agentsview usage daily --all --json
agentsview usage statusline
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Features:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Automatic pricing via LiteLLM rates (with offline fallback)&lt;/li&gt; 
 &lt;li&gt;Authoritative Copilot CLI billing totals when session logs provide them&lt;/li&gt; 
 &lt;li&gt;Prompt-caching-aware cost calculation (cache creation / read tokens)&lt;/li&gt; 
 &lt;li&gt;Per-model breakdown with &lt;code&gt;--breakdown&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Date filtering (&lt;code&gt;--since&lt;/code&gt;, &lt;code&gt;--until&lt;/code&gt;, &lt;code&gt;--all&lt;/code&gt;), agent filtering (&lt;code&gt;--agent&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;JSON output (&lt;code&gt;--json&lt;/code&gt;) for scripting&lt;/li&gt; 
 &lt;li&gt;Timezone-aware date bucketing (&lt;code&gt;--timezone&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Works standalone -- no server required, just run the command&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Per-Session Details&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;agentsview session usage &amp;lt;id&amp;gt;&lt;/code&gt; prints per-session token statistics plus a cost estimate for a single session. The output reports the session&#39;s total output tokens and peak context tokens, plus a cost estimate (&lt;code&gt;cost&lt;/code&gt;) when pricing is available for the session&#39;s model(s) (&lt;code&gt;has_cost&lt;/code&gt;). Cost is computed from input/output and cache tokens internally, but only the output-token and peak-context totals are reported alongside the cost.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Print token usage and cost for a specific session
agentsview session usage &amp;lt;id&amp;gt;

# JSON output for scripting
agentsview session usage &amp;lt;id&amp;gt; --format json
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The same per-session usage data is available from the REST API:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GET /api/v1/sessions/{id}/usage
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The response includes the &lt;code&gt;session_id&lt;/code&gt;, &lt;code&gt;agent&lt;/code&gt;, &lt;code&gt;project&lt;/code&gt;, &lt;code&gt;total_output_tokens&lt;/code&gt;, &lt;code&gt;peak_context_tokens&lt;/code&gt;, &lt;code&gt;has_token_data&lt;/code&gt;, &lt;code&gt;cost&lt;/code&gt;, &lt;code&gt;has_cost&lt;/code&gt;, &lt;code&gt;models&lt;/code&gt;, and &lt;code&gt;unpriced_models&lt;/code&gt; fields from the CLI JSON schema. Machine-readable money is always an integer microdollar object, for example &lt;code&gt;{&quot;cost&quot;:{&quot;microdollars&quot;:2410000}}&lt;/code&gt;; CLI tables and labels render that value as ordinary dollars. HTTP responses also include &lt;code&gt;server_running: true&lt;/code&gt;. Existing sessions return &lt;code&gt;200&lt;/code&gt; even when token or cost data is absent; missing sessions return &lt;code&gt;404&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The deprecated alias &lt;code&gt;agentsview token-use &amp;lt;id&amp;gt;&lt;/code&gt; remains available for compatibility and now also reports cost estimates.&lt;/p&gt; 
&lt;h2&gt;Session Stats&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;agentsview stats&lt;/code&gt; emits window-scoped analytics over recorded sessions: totals, archetypes (automation vs. quick/standard/deep/marathon), distributions for session duration, user-message count, peak context, and tools-per-turn, plus cache economics, tool/model/agent mix, and a temporal hourly breakdown. The &lt;code&gt;--format json&lt;/code&gt; output follows a versioned v1 schema (&lt;code&gt;schema_version: 1&lt;/code&gt;) suitable for downstream consumers.&lt;/p&gt; 
&lt;p&gt;By default, &lt;code&gt;stats&lt;/code&gt; only reads the local SQLite archive. Git-derived outcome metrics are opt-in because they can be slow or brittle on large/missing repos: use &lt;code&gt;--include-git-outcomes&lt;/code&gt; for commits/LOC/files changed, and &lt;code&gt;--include-github-outcomes&lt;/code&gt; for GitHub PR counts via &lt;code&gt;gh&lt;/code&gt; (this also enables git outcomes).&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Human-readable summary over the last 28 days
agentsview stats

# Machine-readable JSON over a fixed date range
agentsview stats --format json --since 2026-04-01 --until 2026-04-15

# Restrict to one agent and inspect the schema
agentsview stats --format json --agent claude | jq &#39;.schema_version&#39;

# Include expensive local git outcome metrics explicitly
agentsview stats --include-git-outcomes
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Session Browser&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Dashboard&lt;/th&gt; 
   &lt;th&gt;Session viewer&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://agentsview.io/assets/generated/screenshots/dashboard.png&quot; alt=&quot;Dashboard&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://agentsview.io/assets/generated/screenshots/message-viewer.png&quot; alt=&quot;Session viewer&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Search&lt;/th&gt; 
   &lt;th&gt;Activity heatmap&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://agentsview.io/assets/generated/screenshots/search-results.png&quot; alt=&quot;Search&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://agentsview.io/assets/generated/screenshots/heatmap.png&quot; alt=&quot;Heatmap&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Full-text search&lt;/strong&gt; across all message content (FTS5)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Semantic search&lt;/strong&gt; (opt-in) -- index session content with any OpenAI-compatible embeddings endpoint and search by meaning with &lt;code&gt;agentsview session search --semantic&lt;/code&gt; or &lt;code&gt;--hybrid&lt;/code&gt;; every content-search match cites the conversation unit it came from (&lt;a href=&quot;https://agentsview.io/semantic-search/&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Token usage and cost dashboard&lt;/strong&gt; -- per-session and per-model cost breakdowns, daily spend charts, all in the web UI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Analytics dashboard&lt;/strong&gt; -- activity heatmaps, tool usage, velocity metrics, project breakdowns&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Recent Edits feed&lt;/strong&gt; -- the files your agents changed most recently across every session, grouped by project and path, each linking to the message that made the change&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Data workspace&lt;/strong&gt; -- inspect project inventory and observed folders, preview reclassification impact, and manage worktree mapping rules&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Recall corpus browser&lt;/strong&gt; -- explore experimental distilled knowledge and jump from entries to their supporting transcript evidence&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Live updates&lt;/strong&gt; via SSE as active sessions receive new messages&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Keyboard-first&lt;/strong&gt; navigation (&lt;code&gt;j&lt;/code&gt;/&lt;code&gt;k&lt;/code&gt;/&lt;code&gt;[&lt;/code&gt;/&lt;code&gt;]&lt;/code&gt;, &lt;code&gt;Cmd+K&lt;/code&gt; search, &lt;code&gt;?&lt;/code&gt; for all shortcuts)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Export&lt;/strong&gt; sessions as HTML or publish to GitHub Gist&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported Agents&lt;/h2&gt; 
&lt;p&gt;agentsview discovers sessions from all of these. Aider is opt-in because it has no central session directory; set &lt;code&gt;AIDER_DIR&lt;/code&gt; or &lt;code&gt;aider_dirs&lt;/code&gt; to enable it. Amp support is deprecated because current Amp releases may store threads server-side and leave only local stubs; agentsview can still parse historical local Amp thread JSON files.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Agent&lt;/th&gt; 
   &lt;th&gt;Session Directory&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Aider&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;repo&amp;gt;/.aider.chat.history.md&lt;/code&gt; (per repo; opt in with &lt;code&gt;AIDER_DIR&lt;/code&gt; or &lt;code&gt;aider_dirs&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Amp (deprecated)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/amp/threads/&lt;/code&gt; (historical local thread JSON only)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Antigravity&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.gemini/antigravity/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Antigravity CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.gemini/antigravity-cli/&lt;/code&gt; (see note below)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude Code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.claude/projects/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OpenClaude&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.openclaude/projects/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude Cowork&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Claude/local-agent-mode-sessions/&lt;/code&gt; (macOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Codex&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.codex/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;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;Devin CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/devin/&lt;/code&gt; (Linux), &lt;code&gt;~/Library/Application Support/devin/&lt;/code&gt; (macOS); point &lt;code&gt;DEVIN_DIR&lt;/code&gt; / &lt;code&gt;devin_dirs&lt;/code&gt; at the root that contains &lt;code&gt;cli/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cortex Code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.snowflake/cortex/conversations/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cursor&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.cursor/projects/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DeepSeek TUI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.codewhale/sessions/&lt;/code&gt;, &lt;code&gt;~/.deepseek/sessions/&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/sessions/&lt;/code&gt; (or &lt;code&gt;$DSH_HOME/sessions/&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Forge&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.forge/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Gemini CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.gemini/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Goose&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/goose/sessions/&lt;/code&gt; (macOS and Linux), &lt;code&gt;%APPDATA%\\Block\\goose\\data\\sessions\\&lt;/code&gt; (Windows)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;gptme&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/gptme/logs/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Grok&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.grok/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Hermes Agent&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.hermes/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;iFlow&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.iflow/projects/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kilo&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/kilo/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kilo (legacy)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Code/User/globalStorage/kilocode.kilo-code/&lt;/code&gt; (macOS), &lt;code&gt;~/.config/Code/User/globalStorage/kilocode.kilo-code/&lt;/code&gt; (Linux)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kimi&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.kimi/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kimi Work&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/kimi-desktop/daimon-share/daimon/runtime/kimi-code/home/sessions/&lt;/code&gt; (macOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kiro CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.kiro/sessions/cli/&lt;/code&gt;, &lt;code&gt;~/.local/share/kiro-cli/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kiro IDE&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Kiro/&lt;/code&gt; (macOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MiMoCode&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/mimocode/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Mistral Vibe&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.vibe/logs/session/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OpenClaw&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.openclaw/agents/&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;~/.local/share/opencode/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OpenHands CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.openhands/conversations/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OhMyPi&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.omp/agent/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Omnigent&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.omnigent/chat.db&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Pi&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.pi/agent/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Prime Agent&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.prime/agent/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Poolside&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/poolside/trajectories/&lt;/code&gt; (macOS), &lt;code&gt;~/.local/state/poolside/trajectories/&lt;/code&gt; (Linux), &lt;code&gt;%APPDATA%\\poolside\\trajectories\\&lt;/code&gt; (Windows)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Piebald&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.local/share/piebald/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Posit Assistant&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.posit/assistant/workspaces/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Positron Assistant&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Positron/User/&lt;/code&gt; (macOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;QClaw&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.qclaw/agents/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Qoder&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.qoder/projects/&lt;/code&gt;, &lt;code&gt;~/.qoderwork/projects/&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/projects/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;QwenPaw&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.copaw/workspaces/&lt;/code&gt;, &lt;code&gt;~/.qwenpaw/workspaces/&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;code&gt;%APPDATA%\\reasonix\\&lt;/code&gt; (Windows)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;RooCode&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/&lt;/code&gt; (macOS), &lt;code&gt;~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/&lt;/code&gt; (Linux), &lt;code&gt;%APPDATA%\\Code\\User\\globalStorage\\rooveterinaryinc.roo-cline\\&lt;/code&gt; (Windows)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;VSCode Copilot&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Code/User/&lt;/code&gt; (macOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Visual Studio Copilot&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;%LOCALAPPDATA%\\Temp\\VSGitHubCopilotLogs\\traces\\&lt;/code&gt; (Windows), &lt;code&gt;~/Library/Caches/VSGitHubCopilotLogs/traces/&lt;/code&gt; (macOS), &lt;code&gt;~/.cache/VSGitHubCopilotLogs/traces/&lt;/code&gt; (Linux)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Windsurf&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Windsurf/User/&lt;/code&gt; (macOS), &lt;code&gt;~/.config/Windsurf/User/&lt;/code&gt; (Linux), &lt;code&gt;%APPDATA%\\Windsurf\\User\\&lt;/code&gt; (Windows)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Trae&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;%APPDATA%\\Trae\\User\\&lt;/code&gt; (Windows), &lt;code&gt;~/Library/Application Support/Trae/User/&lt;/code&gt; (macOS), &lt;code&gt;~/.config/Trae/User/&lt;/code&gt; (Linux)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;TraeX (TRAE CLI)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.trae/cli/sessions/&lt;/code&gt;, &lt;code&gt;~/.trae/cli/archived_sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Warp&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.warp/&lt;/code&gt; (platform-dependent)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;WorkBuddy&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.workbuddy/projects/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ZCode&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.zcode/cli/db/&lt;/code&gt;, &lt;code&gt;~/.zcode/cli/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Zed&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/Library/Application Support/Zed/&lt;/code&gt; (macOS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Zencoder&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.zencoder/sessions/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Grok sessions are read from &lt;code&gt;summary.json&lt;/code&gt; (title, timestamps, project), optional &lt;code&gt;signals.json&lt;/code&gt; (token counters), and &lt;code&gt;chat_history.jsonl&lt;/code&gt; when present for the full transcript (user turns, assistant replies, thinking, and tool calls). If &lt;code&gt;chat_history.jsonl&lt;/code&gt; is missing, AgentsView falls back to summary-only mode. Set &lt;code&gt;GROK_DIR&lt;/code&gt; or &lt;code&gt;grok_dirs&lt;/code&gt; to override the default directory.&lt;/p&gt; 
&lt;p&gt;Goose sessions are read from its shared SQLite &lt;code&gt;sessions.db&lt;/code&gt;, including transcript content, thinking, tool calls and results, session relationships, models, token usage, and recorded costs. Set &lt;code&gt;GOOSE_PATH_ROOT&lt;/code&gt; to a Goose path root (sessions are read from &lt;code&gt;&amp;lt;root&amp;gt;/data/sessions/&lt;/code&gt;), or &lt;code&gt;goose_dirs&lt;/code&gt; to one or more data or sessions directories.&lt;/p&gt; 
&lt;p&gt;Each directory can be overridden with an environment variable. See the &lt;a href=&quot;https://agentsview.io/configuration/&quot;&gt;configuration docs&lt;/a&gt; for details. Cursor attribution stats are a live, machine-local read from &lt;code&gt;~/.cursor/ai-tracking/ai-code-tracking.db&lt;/code&gt; by default and can be redirected with &lt;code&gt;AGENTSVIEW_CURSOR_ATTRIBUTION_DB&lt;/code&gt;; they are not synced or aggregated through PostgreSQL.&lt;/p&gt; 
&lt;h3&gt;Aider: per-repo Markdown logs&lt;/h3&gt; 
&lt;p&gt;Aider has no central session store; it writes one &lt;code&gt;.aider.chat.history.md&lt;/code&gt; Markdown log per repository, and one log accumulates many runs (one per &lt;code&gt;aider&lt;/code&gt; launch, delimited by &lt;code&gt;# aider chat started at ...&lt;/code&gt; headers). agentsview indexes &lt;strong&gt;each run as its own session&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;AgentsView does not scan for Aider logs by default. Earlier builds attempted an always-on bounded scan of the home directory, but that was not trustworthy: desktop launches and background usage refreshes could still trigger macOS privacy prompts for protected folders. To enable Aider, point &lt;code&gt;AIDER_DIR&lt;/code&gt; (or the &lt;code&gt;aider_dirs&lt;/code&gt; config key) at a code root you explicitly want scanned. The scan descends at most four levels below each configured root, skips vendor/build/VCS directories by name (&lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;target&lt;/code&gt;, &lt;code&gt;.git&lt;/code&gt;, &lt;code&gt;Library&lt;/code&gt;, &lt;code&gt;go&lt;/code&gt;, &lt;code&gt;.cargo&lt;/code&gt;, and similar), and stops after a two-second wall-clock budget. On macOS, broad home roots still skip protected top-level folders unless one of those folders is configured directly. The live file watcher only watches configured Aider roots shallowly; new repos are picked up by the periodic sync, which runs every 15 minutes.&lt;/p&gt; 
&lt;p&gt;Because the format is Markdown-derived, roles are reconstructed from line prefixes and there are no per-message timestamps; a run&#39;s start time comes from its &lt;code&gt;# aider chat started at ...&lt;/code&gt; header (written in local time, assumed UTC).&lt;/p&gt; 
&lt;h3&gt;JetBrains Copilot via exporter&lt;/h3&gt; 
&lt;p&gt;JetBrains IDEs store Copilot chat in a Nitrite database that agentsview does not read directly. The supported path today is to export those sessions to Copilot JSONL with &lt;a href=&quot;https://github.com/MCBoarder289/copilot-jetbrains-exporter&quot;&gt;copilot-jetbrains-exporter&lt;/a&gt;, then point agentsview at that output directory.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Export JetBrains Copilot sessions to JSONL
copilot-jetbrains-exporter --output ~/.copilot/jetbrains-sessions

# Tell agentsview to index the exported sessions
export COPILOT_DIR=~/.copilot/jetbrains-sessions
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or in &lt;code&gt;~/.agentsview/config.toml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;copilot_dirs = [&quot;~/.copilot/jetbrains-sessions&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Re-run the exporter after new JetBrains Copilot sessions if you want agentsview to pick up fresh conversations from that source.&lt;/p&gt; 
&lt;h3&gt;Antigravity CLI: high-resolution transcripts&lt;/h3&gt; 
&lt;p&gt;Antigravity CLI sessions appear in two on-disk formats: newer releases store conversation trajectories as SQLite &lt;code&gt;.db&lt;/code&gt; files, older releases used AES-GCM-encrypted &lt;code&gt;.pb&lt;/code&gt; files. For either format, the full transcript -- structured tool calls, results, reasoning, and diffs -- comes from a &lt;code&gt;&amp;lt;uuid&amp;gt;.trajectory.json&lt;/code&gt; sidecar. Without a covering sidecar, agentsview falls back to &lt;strong&gt;summary mode&lt;/strong&gt;: a heuristic decode of the raw &lt;code&gt;.db&lt;/code&gt; steps (prompts and tool-call names only), or for &lt;code&gt;.pb&lt;/code&gt; sessions your prompts from &lt;code&gt;history.jsonl&lt;/code&gt; plus any plain-text artifacts under &lt;code&gt;brain/&lt;/code&gt; (plans, walkthroughs, checkpoints). Summary-mode sessions show a &quot;Summary mode&quot; badge in the detail header that links here.&lt;/p&gt; 
&lt;p&gt;To unlock full transcripts for &lt;code&gt;.db&lt;/code&gt; and &lt;code&gt;.pb&lt;/code&gt; sessions alike, run &lt;a href=&quot;https://github.com/mjacobs/agy-reader&quot;&gt;agy-reader&lt;/a&gt; alongside agentsview. agy-reader talks to the local Antigravity daemon, decrypts each conversation, and writes a &lt;code&gt;&amp;lt;uuid&amp;gt;.trajectory.json&lt;/code&gt; sidecar next to the source file. agentsview&#39;s file watcher detects the sidecar automatically and parses it in place of summary mode -- no agentsview restart needed.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go install github.com/mjacobs/agy-reader@latest

# Generate sidecars for existing sessions...
agy-reader --sync

# ...or keep them fresh as you work.
agy-reader --watch
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;agy-reader auto-discovers the Antigravity daemon URL by parsing &lt;code&gt;~/.gemini/antigravity-cli/cli.log&lt;/code&gt;. If discovery fails (e.g. the log has rotated), the command prints platform-specific instructions for locating the port and exporting &lt;code&gt;ANTIGRAVITY_DAEMON_URL&lt;/code&gt; manually.&lt;/p&gt; 
&lt;p&gt;Sidecars stay on your machine. agentsview makes no outbound request to produce or read them, and treats sidecars as untrusted structured input -- see &lt;a href=&quot;https://raw.githubusercontent.com/kenn-io/agentsview/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt; for the trust model.&lt;/p&gt; 
&lt;h3&gt;Kilo vs Kilo (legacy).&lt;/h3&gt; 
&lt;p&gt;&lt;em&gt;Kilo&lt;/em&gt; is the OpenCode-based CLI/editor core (&lt;code&gt;~/.local/share/kilo/kilo.db&lt;/code&gt;); it covers both the Kilo CLI and the rebuilt Kilo Code VS Code extension (after March 2026), which shares that same database. &lt;em&gt;Kilo (legacy)&lt;/em&gt; is the legacy RooCode-derived VS Code extension that wrote per-task JSON under &lt;code&gt;kilocode.kilo-code/tasks/&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Filesystem Session Sync&lt;/h2&gt; 
&lt;p&gt;One primary AgentsView instance can ingest native agent session directories copied or mounted from other machines without PostgreSQL:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[[session_sources]]
agent = &quot;copilot&quot;
dir = &quot;/srv/session-archive/buildbox/copilot&quot;
machine = &quot;buildbox&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Structured sources are additive to existing &lt;code&gt;copilot_dirs&lt;/code&gt;, &lt;code&gt;claude_project_dirs&lt;/code&gt;, and other per-agent settings. They label sessions by source machine without namespacing native session IDs. Transport source session files only -- never copy &lt;code&gt;sessions.db&lt;/code&gt; or its WAL files. Machine labels are captured at first ingestion; ordinary sync and &lt;code&gt;agentsview sync --full&lt;/code&gt; preserve the stored label. Changing attribution for existing sessions is not currently supported.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://agentsview.io/filesystem-sync/&quot;&gt;Filesystem Session Sync guide&lt;/a&gt; for Git, rsync, shared-mount, freshness, and operational guidance.&lt;/p&gt; 
&lt;h2&gt;PostgreSQL Sync&lt;/h2&gt; 
&lt;p&gt;Push session data to a shared PostgreSQL instance for team dashboards:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;agentsview pg push             # push local data to the default PG target
agentsview pg push archive     # push to one named PG target
agentsview pg push --all       # push every configured PG target sequentially
agentsview pg status           # show status for the default PG target
agentsview pg status archive   # show status for one named PG target
agentsview pg status --all     # show status for every configured PG target
agentsview pg serve            # serve web UI from the default PG target (read-only)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Single-target configs still use the legacy &lt;code&gt;[pg]&lt;/code&gt; block. To manage more than one PostgreSQL destination, define named &lt;code&gt;[pg.NAME]&lt;/code&gt; blocks and set &lt;code&gt;default_pg&lt;/code&gt; when more than one target exists:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;default_pg = &quot;work&quot;

[pg.work]
url = &quot;postgres://user:pass@work-db/agentsview&quot;
machine_name = &quot;laptop&quot;

[pg.archive]
url = &quot;postgres://user:pass@archive-db/agentsview&quot;
machine_name = &quot;laptop-archive&quot;
exclude_projects = [&quot;scratch&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Named target names are normalized case-insensitively. &lt;code&gt;all&lt;/code&gt;, &lt;code&gt;local&lt;/code&gt;, and the legacy &lt;code&gt;[pg]&lt;/code&gt; field names &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;machine_name&lt;/code&gt;, &lt;code&gt;allow_insecure&lt;/code&gt;, &lt;code&gt;projects&lt;/code&gt;, and &lt;code&gt;exclude_projects&lt;/code&gt; cannot be used for &lt;code&gt;[pg.NAME]&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;AGENTSVIEW_PG_URL&lt;/code&gt;, &lt;code&gt;AGENTSVIEW_PG_SCHEMA&lt;/code&gt;, and &lt;code&gt;AGENTSVIEW_PG_MACHINE&lt;/code&gt; still work, but in named-target mode they apply only to the effective default target. They do not rewrite every named &lt;code&gt;[pg.NAME]&lt;/code&gt; entry.&lt;/p&gt; 
&lt;h3&gt;Automatic push (background service)&lt;/h3&gt; 
&lt;p&gt;To keep a shared PostgreSQL database current without running &lt;code&gt;pg push&lt;/code&gt; by hand, run the auto-push daemon. It watches your session directories and pushes shortly after new sessions are recorded, with a periodic floor as a safety net:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;agentsview pg push --watch                 # foreground, Ctrl-C to stop
agentsview pg push archive --watch         # watch one named PG target
agentsview pg push --watch --debounce 1m   # custom coalesce window
agentsview pg push --watch --interval 5m   # custom floor interval
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;--watch&lt;/code&gt; follows the default PG target unless you pass one target name. &lt;code&gt;--all --watch&lt;/code&gt; is rejected; multi-target background watch remains out of scope for now.&lt;/p&gt; 
&lt;p&gt;The daemon reads the same &lt;code&gt;[pg]&lt;/code&gt; config as &lt;code&gt;pg push&lt;/code&gt;, so the PostgreSQL DSN must be set in your config file (or an environment variable it expands). Protect the config file, since it holds credentials:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod 600 ~/.agentsview/config.toml
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To run it unattended as an OS service (launchd on macOS, &lt;code&gt;systemd --user&lt;/code&gt; on Linux):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;agentsview pg service install     # generate the unit, enable + start it
agentsview pg service status      # show manager status
agentsview pg service logs -f     # follow the service log
agentsview pg service uninstall   # stop and remove
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;pg serve&lt;/code&gt; and &lt;code&gt;pg service&lt;/code&gt; always use the effective default PG target. In named-target mode, set &lt;code&gt;default_pg&lt;/code&gt; to choose which target those long-running commands use.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Linux headless machines:&lt;/strong&gt; systemd &lt;code&gt;--user&lt;/code&gt; services stop at logout and do not start at boot unless lingering is enabled for your user. &lt;code&gt;install&lt;/code&gt; detects this and prints the command; you can also run it yourself:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;loginctl enable-linger &quot;$USER&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://agentsview.io/postgresql/&quot;&gt;PostgreSQL docs&lt;/a&gt; for setup and configuration.&lt;/p&gt; 
&lt;h2&gt;DuckDB Mirror and Quack&lt;/h2&gt; 
&lt;p&gt;DuckDB support is a mirror backend, not a replacement for the local SQLite archive. &lt;code&gt;agentsview serve&lt;/code&gt; still performs primary ingestion into SQLite. Use DuckDB when you want a portable analytics file, read-only local serving from a mirror, or remote read access through DuckDB&#39;s Quack protocol.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;agentsview duckdb push          # mirror SQLite into DuckDB
agentsview duckdb status        # show mirror sync status
agentsview duckdb serve         # serve web UI from DuckDB (read-only)
agentsview duckdb quack serve   # expose the local DuckDB file over Quack
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;agentsview duckdb serve&lt;/code&gt; reads &lt;code&gt;[duckdb].path&lt;/code&gt; or &lt;code&gt;AGENTSVIEW_DUCKDB_PATH&lt;/code&gt;. To serve from a remote Quack endpoint, set &lt;code&gt;AGENTSVIEW_DUCKDB_URL&lt;/code&gt; and &lt;code&gt;AGENTSVIEW_DUCKDB_TOKEN&lt;/code&gt; instead. Quack is still a new DuckDB protocol, so agentsview keeps conservative defaults: local Quack serving binds to loopback, requires a token, and rejects non-loopback plain HTTP unless &lt;code&gt;--allow-insecure&lt;/code&gt; is explicit. For remote use, prefer a TLS URL or put Quack behind an authenticated tunnel/proxy.&lt;/p&gt; 
&lt;p&gt;Backend modes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;SQLite: primary local archive, file sync, FTS5 search, and writable UI.&lt;/li&gt; 
 &lt;li&gt;PostgreSQL: optional shared team backend; push from SQLite, serve read-only.&lt;/li&gt; 
 &lt;li&gt;DuckDB: optional mirror file or Quack endpoint; push from SQLite, serve read-only.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Troubleshooting:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If &lt;code&gt;duckdb push&lt;/code&gt; fails to open the mirror, confirm the binary was built with the DuckDB Go driver for your platform and that &lt;code&gt;AGENTSVIEW_DUCKDB_PATH&lt;/code&gt; points to a writable file location.&lt;/li&gt; 
 &lt;li&gt;If Quack commands fail with extension errors, update the agentsview binary so the embedded DuckDB runtime includes the Quack extension.&lt;/li&gt; 
 &lt;li&gt;If a remote attach fails, check the token, the &lt;code&gt;quack:&lt;/code&gt; URL, TLS/proxy termination, and whether the server was intentionally started with &lt;code&gt;--allow-insecure&lt;/code&gt; for plain non-loopback binds.&lt;/li&gt; 
 &lt;li&gt;DuckDB search currently uses substring/regex fallback behavior. SQLite FTS5 remains the indexed search path for primary local serving.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Privacy&lt;/h2&gt; 
&lt;p&gt;agentsview sends a limited anonymous &lt;code&gt;daemon_active&lt;/code&gt; telemetry ping to PostHog when the server starts and every 24 hours while it runs, using a stable random install ID as the event &lt;code&gt;DistinctId&lt;/code&gt;. The event includes &lt;code&gt;application=agentsview&lt;/code&gt;, app version, commit, OS, and CPU architecture, with &lt;code&gt;$process_person_profile=false&lt;/code&gt; and &lt;code&gt;$geoip_disable=true&lt;/code&gt;. It does not include session, project, prompt, file path, account, or machine identity. Disable telemetry with &lt;code&gt;AGENTSVIEW_TELEMETRY_ENABLED=0&lt;/code&gt; or &lt;code&gt;TELEMETRY_ENABLED=0&lt;/code&gt;. Telemetry is also hard-disabled in Go test binaries, regardless of environment.&lt;/p&gt; 
&lt;p&gt;All session data stays on your machine. The server binds to &lt;code&gt;127.0.0.1&lt;/code&gt; by default. The update check is optional and can be disabled with &lt;code&gt;--no-update-check&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Full docs at &lt;strong&gt;&lt;a href=&quot;https://agentsview.io&quot;&gt;agentsview.io&lt;/a&gt;&lt;/strong&gt;: &lt;a href=&quot;https://agentsview.io/quickstart/&quot;&gt;Quick Start&lt;/a&gt; -- &lt;a href=&quot;https://agentsview.io/usage/&quot;&gt;Usage Guide&lt;/a&gt; -- &lt;a href=&quot;https://agentsview.io/commands/&quot;&gt;CLI Reference&lt;/a&gt; -- &lt;a href=&quot;https://agentsview.io/configuration/&quot;&gt;Configuration&lt;/a&gt; -- &lt;a href=&quot;https://agentsview.io/filesystem-sync/&quot;&gt;Filesystem Sync&lt;/a&gt; -- &lt;a href=&quot;https://agentsview.io/architecture/&quot;&gt;Architecture&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;Requires Go 1.26+ (CGO), Node.js 22+.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make dev            # Go server (dev mode)
make frontend-dev   # Vite+ dev server (run alongside make dev)
make build          # build binary with embedded frontend
make install        # install to ~/.local/bin
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make test           # Go tests (CGO_ENABLED=1 -tags &quot;fts5&quot;)
make bench-backends # compare SQLite, DuckDB, and PostgreSQL store reads
make lint           # golangci-lint + NilAway
make nilaway        # NilAway through custom golangci-lint
make e2e            # Playwright E2E tests
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;make bench-backends&lt;/code&gt; requires Docker. It starts a PostgreSQL container with testcontainers, mirrors the same SQLite fixture into DuckDB and PostgreSQL, and benchmarks the shared &lt;code&gt;db.Store&lt;/code&gt; read queries for relative comparison. The default fixture is 1,000 sessions and 64,000 messages; use &lt;code&gt;BENCH_BACKENDS_SESSIONS&lt;/code&gt; and &lt;code&gt;BENCH_BACKENDS_MESSAGES_PER_SESSION&lt;/code&gt; to scale it. When the Docker CLI uses a non-default socket, export &lt;code&gt;DOCKER_HOST&lt;/code&gt; for that socket before running the benchmark.&lt;/p&gt; 
&lt;p&gt;Pre-commit and pre-push hooks via &lt;a href=&quot;https://github.com/j178/prek&quot;&gt;prek&lt;/a&gt;: run &lt;code&gt;make lint-tools&lt;/code&gt; and &lt;code&gt;make install-hooks&lt;/code&gt; after cloning (requires &lt;code&gt;prek&lt;/code&gt; and &lt;code&gt;uv&lt;/code&gt;).&lt;/p&gt; 
&lt;h3&gt;Project Layout&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;cmd/agentsview/     CLI entrypoint
internal/           Go packages (config, db, parser, server, sync, postgres)
frontend/           Svelte 5 SPA (Vite+, TypeScript)
desktop/            Tauri desktop wrapper
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;p&gt;Inspired by &lt;a href=&quot;https://github.com/andyfischer/ai-coding-tools/tree/main/claude-history-tool&quot;&gt;claude-history-tool&lt;/a&gt; by Andy Fischer and &lt;a href=&quot;https://github.com/simonw/claude-code-transcripts&quot;&gt;claude-code-transcripts&lt;/a&gt; by Simon Willison.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>harness/harness</title>
      <link>https://github.com/harness/harness</link>
      <description>&lt;p&gt;Harness Open Source is an end-to-end developer platform with Source Control Management, CI/CD Pipelines, Hosted Developer Environments, and Artifact Registries.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Harness&lt;/h1&gt; 
&lt;p&gt;Harness Open Source is an open source development platform packed with the power of code hosting, automated DevOps pipelines, hosted development environments (Gitspaces), and artifact registries.&lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Harness Open source is an open source development platform packed with the power of code hosting, automated DevOps pipelines, Gitspaces, and artifact registries.&lt;/p&gt; 
&lt;h2&gt;Running Harness locally&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The latest publicly released docker image can be found on &lt;a href=&quot;https://hub.docker.com/r/harness/harness&quot;&gt;harness/harness&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;To install Harness yourself, simply run the command below. Once the container is up, you can visit &lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt; in your browser.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  -p 3000:3000 \
  -p 3022:3022 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /tmp/harness:/data \
  --name harness \
  --restart always \
  harness/harness
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The Harness image uses a volume to store the database and repositories. It is highly recommended to use a bind mount or named volume as otherwise all data will be lost once the container is stopped.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;See &lt;a href=&quot;https://developer.harness.io/docs/open-source&quot;&gt;developer.harness.io&lt;/a&gt; to learn how to get the most out of Harness.&lt;/p&gt; 
&lt;h2&gt;Where is Drone?&lt;/h2&gt; 
&lt;p&gt;Harness Open Source represents a massive investment in the next generation of Drone. Where Drone focused solely on continuous integration, Harness adds source code hosting, developer environments (gitspaces), and artifact registries; providing teams with an end-to-end, open source DevOps platform.&lt;/p&gt; 
&lt;p&gt;The goal is for Harness to eventually be at full parity with Drone in terms of pipeline capabilities, allowing users to seamlessly migrate from Drone to Harness.&lt;/p&gt; 
&lt;p&gt;But, we expect this to take some time, which is why we took a snapshot of Drone as a feature branch &lt;a href=&quot;https://github.com/harness/harness/tree/drone&quot;&gt;drone&lt;/a&gt; (&lt;a href=&quot;https://github.com/harness/harness/raw/drone/.github/readme.md&quot;&gt;README&lt;/a&gt;) so it can continue development.&lt;/p&gt; 
&lt;p&gt;As for Harness, the development is taking place on the &lt;a href=&quot;https://github.com/harness/harness/tree/main&quot;&gt;main&lt;/a&gt; branch.&lt;/p&gt; 
&lt;p&gt;For more information on Harness, please visit &lt;a href=&quot;https://developer.harness.io/&quot;&gt;developer.harness.io&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For more information on Drone, please visit &lt;a href=&quot;https://www.drone.io/&quot;&gt;drone.io&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Harness Open Source Development&lt;/h2&gt; 
&lt;h3&gt;Pre-Requisites&lt;/h3&gt; 
&lt;p&gt;Install the latest stable version of Node and Go version 1.20 or higher, and then install the below Go programs. Ensure the GOPATH &lt;a href=&quot;https://go.dev/doc/gopath_code#GOPATH&quot;&gt;bin directory&lt;/a&gt; is added to your PATH.&lt;/p&gt; 
&lt;p&gt;Install protobuf&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check if you&#39;ve already installed protobuf &lt;code&gt;protoc --version&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;If your version is different than v3.21.11, run &lt;code&gt;brew unlink protobuf&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Get v3.21.11 &lt;code&gt;curl -s https://raw.githubusercontent.com/Homebrew/homebrew-core/9de8de7a533609ebfded833480c1f7c05a3448cb/Formula/protobuf.rb &amp;gt; /tmp/protobuf.rb&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Install it &lt;code&gt;brew install /tmp/protobuf.rb&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Check out your version &lt;code&gt;protoc --version&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Install protoc-gen-go and protoc-gen-go-rpc:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Install protoc-gen-go v1.28.1 &lt;code&gt;go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1&lt;/code&gt; (Note that this will install a binary in $GOBIN so make sure $GOBIN is in your $PATH)&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Install protoc-gen-go-grpc v1.2.0 &lt;code&gt;go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0&lt;/code&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ make dep
$ make tools
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Build&lt;/h3&gt; 
&lt;p&gt;First step is to build the user interface artifacts:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ pushd web
$ yarn install
$ yarn build
$ popd
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After that, you can build the Harness binary:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ make build
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Run&lt;/h3&gt; 
&lt;p&gt;This project supports all operating systems and architectures supported by Go. This means you can build and run the system on your machine; docker containers are not required for local development and testing.&lt;/p&gt; 
&lt;p&gt;To start the server at &lt;code&gt;localhost:3000&lt;/code&gt;, simply run the following command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gitness server .local.env
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Docker Configuration for Pipelines&lt;/h3&gt; 
&lt;p&gt;Harness pipelines run inside Docker containers. The application automatically negotiates the Docker API version with your Docker daemon, so it works with various Docker versions including Docker Desktop, Rancher Desktop, Colima, and native Docker on Linux.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Docker Socket Location&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;By default, Harness expects the Docker socket at &lt;code&gt;/var/run/docker.sock&lt;/code&gt;. If you&#39;re using an alternative Docker runtime, you may need to configure the socket location:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Runtime&lt;/th&gt; 
   &lt;th&gt;Socket Location&lt;/th&gt; 
   &lt;th&gt;Configuration&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Docker Desktop&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Works by default&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Rancher Desktop&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.rd/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create symlink or set &lt;code&gt;GITNESS_DOCKER_HOST&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Colima&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.colima/default/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create symlink or set &lt;code&gt;GITNESS_DOCKER_HOST&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Linux (native)&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Works by default&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Option 1: Create a symlink (recommended)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# For Rancher Desktop
sudo ln -sf ~/.rd/docker.sock /var/run/docker.sock

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

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

# GENERATE PAT (1 YEAR VALIDITY)
$ ./gitness user pat &quot;my-pat-uid&quot; 2592000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The command outputs a valid PAT that has been granted full access as the user. The token can then be send as part of the &lt;code&gt;Authorization&lt;/code&gt; header with Postman or curl:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ curl http://localhost:3000/api/v1/user \
-H &quot;Authorization: Bearer $TOKEN&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;CLI&lt;/h2&gt; 
&lt;p&gt;This project includes VERY basic command line tools for development and running the service. Please remember that you must start the server before you can execute commands.&lt;/p&gt; 
&lt;p&gt;For a full list of supported operations, please see&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ ./gitness --help
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Refer to &lt;a href=&quot;https://github.com/harness/harness/raw/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Apache License 2.0, see &lt;a href=&quot;https://github.com/harness/harness/raw/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>knadh/listmonk</title>
      <link>https://github.com/knadh/listmonk</link>
      <description>&lt;p&gt;High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://zerodha.tech&quot;&gt;&lt;img src=&quot;https://zerodha.tech/static/images/github-badge.svg?sanitize=true&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://listmonk.app&quot;&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/547147/231084896-835dba66-2dfe-497c-ba0f-787564c0819e.png&quot; alt=&quot;listmonk-logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://listmonk.app&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/689b5fbb-dd25-4956-a36f-e3226a65f9c4&quot; alt=&quot;listmonk-dashboard&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Visit &lt;a href=&quot;https://listmonk.app&quot;&gt;listmonk.app&lt;/a&gt; for more info. Check out the &lt;a href=&quot;https://demo.listmonk.app&quot;&gt;&lt;strong&gt;live demo&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Docker&lt;/h3&gt; 
&lt;p&gt;The latest image is available on DockerHub at &lt;a href=&quot;https://hub.docker.com/r/listmonk/listmonk/tags?page=1&amp;amp;ordering=last_updated&amp;amp;name=latest&quot;&gt;&lt;code&gt;listmonk/listmonk:latest&lt;/code&gt;&lt;/a&gt;. Download and use the sample &lt;a href=&quot;https://github.com/knadh/listmonk/raw/master/docker-compose.yml&quot;&gt;docker-compose.yml&lt;/a&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;# Download the compose file to the current directory.
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml

# Run the services in the background.
docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Visit &lt;code&gt;http://localhost:9000&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://listmonk.app/docs/installation&quot;&gt;installation docs&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Binary&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download the &lt;a href=&quot;https://github.com/knadh/listmonk/releases&quot;&gt;latest release&lt;/a&gt; and extract the listmonk binary.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;./listmonk --new-config&lt;/code&gt; to generate config.toml. Edit it.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;./listmonk --install&lt;/code&gt; to setup the Postgres DB (or &lt;code&gt;--upgrade&lt;/code&gt; to upgrade an existing DB. Upgrades are idempotent and running them multiple times have no side effects).&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;./listmonk&lt;/code&gt; and visit &lt;code&gt;http://localhost:9000&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See &lt;a href=&quot;https://listmonk.app/docs/installation&quot;&gt;installation docs&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Developers&lt;/h2&gt; 
&lt;p&gt;listmonk is free and open source software licensed under AGPLv3. If you are interested in contributing, refer to the &lt;a href=&quot;https://listmonk.app/docs/developer-setup&quot;&gt;developer setup&lt;/a&gt;. The backend is written in Go and the frontend is Vue with Buefy for UI.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;listmonk is licensed under the AGPL v3 license.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ViRb3/wgcf</title>
      <link>https://github.com/ViRb3/wgcf</link>
      <description>&lt;p&gt;🚤 Cross-platform, unofficial CLI for Cloudflare Warp&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;wgcf&lt;/h1&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;wgcf is an unofficial, cross-platform CLI for &lt;a href=&quot;https://1.1.1.1/&quot;&gt;Cloudflare Warp&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/drone/build/ViRb3/wgcf&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/issues/ViRb3/wgcf&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/ViRb3/wgcf/total&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/languages/code-size/ViRb3/wgcf&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Register new account&lt;/li&gt; 
 &lt;li&gt;Change license key to use existing Warp+ subscription&lt;/li&gt; 
 &lt;li&gt;Generate WireGuard profile&lt;/li&gt; 
 &lt;li&gt;Check account status&lt;/li&gt; 
 &lt;li&gt;Print trace information to debug Warp/Warp+ status&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;p&gt;You can find pre-compiled binaries on the &lt;a href=&quot;https://github.com/ViRb3/wgcf/releases&quot;&gt;releases page&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;Run &lt;code&gt;wgcf&lt;/code&gt; in a terminal without any arguments to display the help screen. All commands and parameters are documented.&lt;/p&gt; 
&lt;h3&gt;Register new account&lt;/h3&gt; 
&lt;p&gt;Run the following command in a terminal:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wgcf register
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The new account will be saved under &lt;code&gt;wgcf-account.toml&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Generate WireGuard profile&lt;/h3&gt; 
&lt;p&gt;Run the following command in a terminal:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wgcf generate
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The WireGuard profile will be saved under &lt;code&gt;wgcf-profile.conf&lt;/code&gt;. For more information on how to use it, please check the official &lt;a href=&quot;https://www.wireguard.com/quickstart/&quot;&gt;WireGuard Quick Start&lt;/a&gt;.&lt;/p&gt; 
&lt;h4&gt;Maximum transmission unit (MTU)&lt;/h4&gt; 
&lt;p&gt;To ensure maximum compatibility, the generated profile will have a MTU of 1280, just like the official Android app. If you are experiencing performance issues, you may be able to improve your speed by increasing this value. For more information, please check &lt;a href=&quot;https://github.com/ViRb3/wgcf/issues/40&quot;&gt;#40&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Add a license key&lt;/h3&gt; 
&lt;p&gt;If you have an existing Warp+ subscription, for example on your phone, you can bind the account generated by this tool to your phone&#39;s account, sharing its Warp+ status. Please note that there is a limit of 5 maximum devices linked at a time. You can remove linked devices from the 1.1.1.1 app on your phone.&lt;/p&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;Only subscriptions purchased directly from the official 1.1.1.1 app are supported. Keys obtained by any other means, including referrals, will not work and will not be supported.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;First, get your Warp+ account license key. To view it on Android:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Open the &lt;code&gt;1.1.1.1&lt;/code&gt; app&lt;/li&gt; 
 &lt;li&gt;Click on the hamburger menu button in the top-right corner&lt;/li&gt; 
 &lt;li&gt;Navigate to: &lt;code&gt;Account&lt;/code&gt; &amp;gt; &lt;code&gt;Key&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Now, back to wgcf.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;There&#39;s a bug on Cloudflare&#39;s side that prevents existing accounts from getting Warp+ even after you bind a correct license key. If you have ever connected to Warp VPN, then your account is affected. You will need to make a new account via:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-wgcf&quot;&gt;wgcf register
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Then immediately proceed with the steps below, without running any other commands. For more details, check &lt;a href=&quot;https://github.com/ViRb3/wgcf/issues/85&quot;&gt;!85&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;Run the following commands:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wgcf update --license-key &quot;YOUR_LICENSE_KEY_GOES_HERE&quot;
wgcf generate
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Check device status&lt;/h3&gt; 
&lt;p&gt;Run the following command in a terminal:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wgcf status
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Verify Warp/Warp+ works&lt;/h3&gt; 
&lt;p&gt;Connect to the WireGuard profile &lt;a href=&quot;https://raw.githubusercontent.com/ViRb3/wgcf/master/#generate-wireguard-profile&quot;&gt;generated&lt;/a&gt; by this tool, then run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wgcf trace
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you look at the last line, it should say &lt;code&gt;warp=on&lt;/code&gt; or &lt;code&gt;warp=plus&lt;/code&gt;, depending on whether you have Warp or Warp+ respectively.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;If you&#39;re seeing &lt;code&gt;warp=on&lt;/code&gt; even after you bound a Warp+ license key, you are likely experiencing a known bug, please refer to the &lt;a href=&quot;https://raw.githubusercontent.com/ViRb3/wgcf/master/#add-a-license-key&quot;&gt;Add a license key&lt;/a&gt; section.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;The API client code is auto-generated from the OpenAPI spec &lt;a href=&quot;https://raw.githubusercontent.com/ViRb3/wgcf/master/openapi-spec.yml&quot;&gt;openapi-spec.yml&lt;/a&gt; and stored under the &lt;a href=&quot;https://raw.githubusercontent.com/ViRb3/wgcf/master/openapi/&quot;&gt;openapi/&lt;/a&gt; package. Do not touch any code under that package, instead, change the spec file and regenerate the API client code. To do this, &lt;a href=&quot;https://openapi-generator.tech/docs/installation&quot;&gt;install openapi-generator&lt;/a&gt;, then run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go generate
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Notice of Non-Affiliation and Disclaimer&lt;/h2&gt; 
&lt;p&gt;We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with Cloudflare, or any of its subsidiaries or its affiliates. The official Cloudflare website can be found at &lt;a href=&quot;https://www.cloudflare.com/&quot;&gt;https://www.cloudflare.com/&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The names Cloudflare Warp and Cloudflare as well as related names, marks, emblems and images are registered trademarks of their respective owners.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>XTLS/Xray-core</title>
      <link>https://github.com/XTLS/Xray-core</link>
      <description>&lt;p&gt;Xray, Penetrates Everything. Also the best v2ray-core. Where the magic happens. An open platform for various uses.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Project X&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS&quot;&gt;Project X&lt;/a&gt; originates from XTLS protocol, providing a set of network tools such as &lt;a href=&quot;https://github.com/XTLS/Xray-core&quot;&gt;Xray-core&lt;/a&gt; and &lt;a href=&quot;https://github.com/XTLS/REALITY&quot;&gt;REALITY&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core#readme&quot;&gt;README&lt;/a&gt; is open, so feel free to submit your project &lt;a href=&quot;https://github.com/XTLS/Xray-core/pulls&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.rw&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/a22d34ae-01ee-441c-843a-85356748ed1e&quot; alt=&quot;Remnawave&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://happ.su&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/14055dab-e8bb-48bd-89e8-962709e4098e&quot; alt=&quot;Happ&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://blanc.link/VMTSDqW&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/9145ea7d-5da3-446e-8143-710dba4292c3&quot; alt=&quot;BlancVPN&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/issues/3668&quot;&gt;&lt;strong&gt;Sponsor Xray-core&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Donation &amp;amp; NFTs&lt;/h2&gt; 
&lt;h3&gt;&lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&quot;&gt;Collect a Project X NFT to support the development of Project X!&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&quot;&gt;&lt;img alt=&quot;Project X NFT&quot; width=&quot;150px&quot; src=&quot;https://raw2.seadn.io/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/7fa9ce900fb39b44226348db330e32/8b7fa9ce900fb39b44226348db330e32.svg?sanitize=true&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;TRX(Tron)/USDT/USDC: &lt;code&gt;TNrDh5VSfwd4RPrwsohr6poyNTfFefNYan&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;TON: &lt;code&gt;UQApeV-u2gm43aC1uP76xAC1m6vCylstaN1gpfBmre_5IyTH&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;BTC: &lt;code&gt;1JpqcziZZuqv3QQJhZGNGBVdCBrGgkL6cT&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;XMR: &lt;code&gt;4ABHQZ3yJZkBnLoqiKvb3f8eqUnX4iMPb6wdant5ZLGQELctcerceSGEfJnoCk6nnyRZm73wrwSgvZ2WmjYLng6R7sR67nq&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SOL/USDT/USDC: &lt;code&gt;3x5NuXHzB5APG6vRinPZcsUv5ukWUY1tBGRSJiEJWtZa&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;ETH/USDT/USDC: &lt;code&gt;0xDc3Fe44F0f25D13CACb1C4896CD0D321df3146Ee&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Project X NFT: &lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&quot;&gt;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;VLESS NFT: &lt;a href=&quot;https://opensea.io/collection/vless&quot;&gt;https://opensea.io/collection/vless&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;REALITY NFT: &lt;a href=&quot;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/2&quot;&gt;https://opensea.io/item/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/2&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Related links: &lt;a href=&quot;https://github.com/XTLS/Xray-core/pull/5067&quot;&gt;VLESS Post-Quantum Encryption&lt;/a&gt;, &lt;a href=&quot;https://github.com/XTLS/Xray-core/discussions/4113&quot;&gt;XHTTP: Beyond REALITY&lt;/a&gt;, &lt;a href=&quot;https://github.com/XTLS/Xray-core/discussions/3633&quot;&gt;Announcement of NFTs by Project X&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/raw/main/LICENSE&quot;&gt;Mozilla Public License Version 2.0&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://xtls.github.io&quot;&gt;Project X Official Website&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Telegram&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectXray&quot;&gt;Project X&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectXtls&quot;&gt;Project X Channel&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectVless&quot;&gt;Project VLESS&lt;/a&gt; (Русский)&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/projectXhttp&quot;&gt;Project XHTTP&lt;/a&gt; (Persian)&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linux Script 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-install&quot;&gt;XTLS/Xray-install&lt;/a&gt; (&lt;strong&gt;Official&lt;/strong&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/team-cloudchaser/tempest&quot;&gt;tempest&lt;/a&gt; (supports &lt;a href=&quot;https://systemd.io&quot;&gt;&lt;code&gt;systemd&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://github.com/OpenRC/openrc&quot;&gt;OpenRC&lt;/a&gt;; Linux-only)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Docker 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://ghcr.io/xtls/xray-core&quot;&gt;ghcr.io/xtls/xray-core&lt;/a&gt; (&lt;strong&gt;Official&lt;/strong&gt;)&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://hub.docker.com/r/teddysun/xray&quot;&gt;teddysun/xray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/wulabing/xray_docker&quot;&gt;wulabing/xray_docker&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Web Panel 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/remnawave/panel&quot;&gt;Remnawave&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/MHSanaei/3x-ui&quot;&gt;3X-UI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/PasarGuard/panel&quot;&gt;PasarGuard&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/qist/xray-ui&quot;&gt;Xray-UI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/xeefei/X-Panel&quot;&gt;X-Panel&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Gozargah/Marzban&quot;&gt;Marzban&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hiddify/Hiddify-Manager&quot;&gt;Hiddify&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AghayeCoder/tx-ui&quot;&gt;TX-UI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/ClickDevTech/CELERITY-panel&quot;&gt;CELERITY&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;One Click 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/zxcvos/Xray-script&quot;&gt;Xray-REALITY&lt;/a&gt;, &lt;a href=&quot;https://github.com/sajjaddg/xray-reality&quot;&gt;xray-reality&lt;/a&gt;, &lt;a href=&quot;https://github.com/aleskxyz/reality-ezpz&quot;&gt;reality-ezpz&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hello-yunshu/Xray_bash_onekey&quot;&gt;Xray_bash_onekey&lt;/a&gt;, &lt;a href=&quot;https://github.com/LordPenguin666/XTool&quot;&gt;XTool&lt;/a&gt;, &lt;a href=&quot;https://github.com/vpainless/vpainless&quot;&gt;VPainLess&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/mack-a/v2ray-agent&quot;&gt;v2ray-agent&lt;/a&gt;, &lt;a href=&quot;https://github.com/wulabing/Xray_onekey&quot;&gt;Xray_onekey&lt;/a&gt;, &lt;a href=&quot;https://github.com/proxysu/ProxySU&quot;&gt;ProxySU&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Magisk 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/vincentng295/Magic_V2Ray&quot;&gt;Magic_V2Ray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/E7KMbb/Xray_For_Magisk&quot;&gt;Xray_For_Magisk&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Homebrew 
  &lt;ul&gt; 
   &lt;li&gt;&lt;code&gt;brew install xray&lt;/code&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Example 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/REALITY#readme&quot;&gt;VLESS-XTLS-uTLS-REALITY&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-examples/tree/main/VLESS-TCP-XTLS-Vision&quot;&gt;VLESS-TCP-XTLS-Vision&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-examples/tree/main/All-in-One-fallbacks-Nginx&quot;&gt;All-in-One-fallbacks-Nginx&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Xray-examples 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-examples&quot;&gt;XTLS/Xray-examples&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/chika0801/Xray-examples&quot;&gt;chika0801/Xray-examples&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/lxhao61/integrated-examples&quot;&gt;lxhao61/integrated-examples&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Tutorial 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/chika0801/Xray-install&quot;&gt;XTLS Vision&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://cscot.pages.dev/2023/03/02/Xray-REALITY-tutorial/&quot;&gt;REALITY (English)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/SasukeFreestyle/XTLS-Iran-Reality&quot;&gt;XTLS-Iran-Reality (English)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://computerscot.github.io/vless-xtls-utls-reality-steal-oneself.html&quot;&gt;Xray REALITY with &#39;steal oneself&#39; (English)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://g800.pages.dev/wireguard&quot;&gt;Xray with WireGuard inbound (English)&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;GUI Clients&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;OpenWrt 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Openwrt-Passwall/openwrt-passwall&quot;&gt;PassWall&lt;/a&gt;, &lt;a href=&quot;https://github.com/Openwrt-Passwall/openwrt-passwall2&quot;&gt;PassWall 2&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/fw876/helloworld&quot;&gt;ShadowSocksR Plus+&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/yichya/luci-app-xray&quot;&gt;luci-app-xray&lt;/a&gt; (&lt;a href=&quot;https://github.com/yichya/openwrt-xray&quot;&gt;openwrt-xray&lt;/a&gt;)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Asuswrt-Merlin 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/DanielLavrushin/asuswrt-merlin-xrayui&quot;&gt;XRAYUI&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hq450/fancyss&quot;&gt;fancyss&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Windows 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Furious&quot;&gt;Furious&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/InvisibleManVPN/InvisibleMan-XRayClient&quot;&gt;Invisible Man - Xray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/genyleap/GenyConnect&quot;&gt;GenyConnect&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/PhoenixNil/XrayUI-dev&quot;&gt;XrayUI-dev&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Android 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayNG&quot;&gt;v2rayNG&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/X-flutter&quot;&gt;X-flutter&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/SaeedDev94/Xray&quot;&gt;SaeedDev94/Xray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/lhear/SimpleXray&quot;&gt;SimpleXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Q7DF1/XrayFA&quot;&gt;XrayFA&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/Asterisk4Magisk/AsteriskNG&quot;&gt;AsteriskNG&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;iOS &amp;amp; macOS arm64 &amp;amp; tvOS 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/happ-proxy-utility/id6504287215&quot;&gt;Happ&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/ru/app/happ-proxy-utility-plus/id6746188973&quot;&gt;Happ RU&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/us/app/happ-proxy-utility-for-tv/id6748297274&quot;&gt;Happ tvOS&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/streisand/id6450534064&quot;&gt;Streisand&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/en/app/incy/id6756943388&quot;&gt;INCY&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;macOS arm64 &amp;amp; x64 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/happ-proxy-utility/id6504287215&quot;&gt;Happ&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/ru/app/happ-proxy-utility-plus/id6746188973&quot;&gt;Happ RU&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/yanue/V2rayU&quot;&gt;V2rayU&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/tzmax/V2RayXS&quot;&gt;V2RayXS&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Furious&quot;&gt;Furious&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/goxray/desktop&quot;&gt;GoXRay&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/genyleap/GenyConnect&quot;&gt;GenyConnect&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/en/app/incy/id6756943388&quot;&gt;INCY&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Linux 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/v2rayA/v2rayA&quot;&gt;v2rayA&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Furious&quot;&gt;Furious&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/ketetefid/GorzRay&quot;&gt;GorzRay&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/goxray/desktop&quot;&gt;GoXRay&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/AnyPortal/AnyPortal&quot;&gt;AnyPortal&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/genyleap/GenyConnect&quot;&gt;GenyConnect&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/OneXray/OneXray&quot;&gt;OneXray&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;HarmonyOS 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/popsiclelmlm/Hey&quot;&gt;Hey&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Others that support VLESS, XTLS, REALITY, XUDP, PLUX...&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;iOS &amp;amp; macOS arm64 &amp;amp; tvOS 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/NodePassProject/Anywhere&quot;&gt;Anywhere&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/shadowrocket/id932747118&quot;&gt;Shadowrocket&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/loon/id1373567447&quot;&gt;Loon&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/egern/id1616105820&quot;&gt;Egern&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/quantumult-x/id1443988620&quot;&gt;Quantumult X&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Xray Tools 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/lilendian0x00/xray-knife&quot;&gt;xray-knife&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/kutovoys/xray-checker&quot;&gt;xray-checker&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Xray Wrapper 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/libXray&quot;&gt;XTLS/libXray&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/remnawave/xtls-sdk&quot;&gt;xtls-sdk&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/hiddify/xtlsapi&quot;&gt;xtlsapi&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/2dust/AndroidLibXrayLite&quot;&gt;AndroidLibXrayLite&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XIIIFOX/flutter_vless&quot;&gt;flutter_vless&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/LorenEteval/Xray-core-python&quot;&gt;Xray-core-python&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XVGuardian/xray-api&quot;&gt;xray-api&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/XrayR-project/XrayR&quot;&gt;XrayR&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/XrayR-project/XrayR-release&quot;&gt;XrayR-release&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/missuo/XrayR-V2Board&quot;&gt;XrayR-V2Board&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Cores 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/amnezia-vpn&quot;&gt;Amnezia VPN&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/MetaCubeX/mihomo&quot;&gt;mihomo&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/SagerNet/sing-box&quot;&gt;sing-box&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/raw/main/CODE_OF_CONDUCT.md&quot;&gt;Code of Conduct&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://deepwiki.com/XTLS/Xray-core&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/XTLS/Xray-core/releases/tag/v1.0.0&quot;&gt;Xray-core v1.0.0&lt;/a&gt; was forked from &lt;a href=&quot;https://github.com/v2fly/v2ray-core/commit/9a03cc5c98d04cc28320fcee26dbc236b3291256&quot;&gt;v2fly-core 9a03cc5&lt;/a&gt;, and we have made &amp;amp; accumulated a huge number of enhancements over time, check &lt;a href=&quot;https://github.com/XTLS/Xray-core/releases&quot;&gt;the release notes for each version&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;For third-party projects used in &lt;a href=&quot;https://github.com/XTLS/Xray-core&quot;&gt;Xray-core&lt;/a&gt;, check your local or &lt;a href=&quot;https://github.com/XTLS/Xray-core/raw/main/go.mod&quot;&gt;the latest go.mod&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Bundled Third-Party Components Redistribution&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Certain optional features dynamically load third-party components. These optional components are separate works distributed under their own licenses, and are bundled into the ZIP package for ease of use. Users may replace these components under the licenses from these components.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;These components include:&lt;/p&gt; 
&lt;h4&gt;Wintun&lt;/h4&gt; 
&lt;p&gt;This distribution contains unmodified official precompiled and pre-signed Wintun binaries.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Project: Wintun&lt;/li&gt; 
 &lt;li&gt;Copyright: Copyright (C) 2018-2021 WireGuard LLC. All Rights Reserved.&lt;/li&gt; 
 &lt;li&gt;Redistribution License: Prebuilt Binaries License (PBL) bundled with official precompiled and pre-signed binaries from &lt;a href=&quot;http://wintun.net&quot;&gt;wintun.net&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Component(s): wintun.dll&lt;/li&gt; 
 &lt;li&gt;Source: &lt;a href=&quot;https://www.wintun.net/&quot;&gt;https://www.wintun.net/&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Included in: 
  &lt;ul&gt; 
   &lt;li&gt;Windows x86 (windows-32, win7-32)&lt;/li&gt; 
   &lt;li&gt;Windows x86-64 (windows-64, win7-64)&lt;/li&gt; 
   &lt;li&gt;Windows AArch64 (windows-arm64)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Notes: Wintun is an optional runtime-loaded component only used for TUN inbound functionality on supported Windows platforms.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;One-line Compilation&lt;/h2&gt; 
&lt;h3&gt;Windows (PowerShell)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;$env:CGO_ENABLED=0
go build -o xray.exe -trimpath -buildvcs=false -ldflags=&quot;-s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Linux / macOS&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -ldflags=&quot;-s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Reproducible Releases&lt;/h3&gt; 
&lt;p&gt;Make sure that you are using the same Go version, and remember to set the git commit id (7 bytes):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags=&quot;all=-l=4&quot; -ldflags=&quot;-X github.com/xtls/xray-core/core.build=REPLACE -s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For Android:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GOOS=android GOARCH=arm64 CGO_ENABLED=1 CC=/path/to/aarch64-linux-android24-clang go build -o xray -trimpath -buildvcs=false -gcflags=&quot;all=-l=4&quot; -ldflags=&quot;-X github.com/xtls/xray-core/core.build=REPLACE -s -w -buildid= -checklinkname=0&quot; -v ./main
GOOS=android GOARCH=amd64 CGO_ENABLED=1 CC=/path/to/x86_64-linux-android24-clang go build -o xray -trimpath -buildvcs=false -gcflags=&quot;all=-l=4&quot; -ldflags=&quot;-X github.com/xtls/xray-core/core.build=REPLACE -s -w -buildid= -checklinkname=0&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you are compiling a 32-bit MIPS/MIPSLE target, use this command instead:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags=&quot;-l=4&quot; -ldflags=&quot;-X github.com/xtls/xray-core/core.build=REPLACE -s -w -buildid=&quot; -v ./main
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Stargazers over time&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://starchart.cc/XTLS/Xray-core&quot;&gt;&lt;img src=&quot;https://starchart.cc/XTLS/Xray-core.svg?sanitize=true&quot; alt=&quot;Stargazers over time&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>mudler/LocalAI</title>
      <link>https://github.com/mudler/LocalAI</link>
      <description>&lt;p&gt;LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt; &lt;br /&gt; &lt;img width=&quot;300&quot; src=&quot;https://raw.githubusercontent.com/mudler/LocalAI/master/core/http/static/logo.png&quot; /&gt; &lt;br /&gt; &lt;br /&gt; &lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/go-skynet/LocalAI/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/release/go-skynet/LocalAI?&amp;amp;label=Latest&amp;amp;style=for-the-badge&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/mudler/LocalAI/master/LICENSE&quot; target=&quot;blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge&quot; alt=&quot;LocalAI License&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://twitter.com/LocalAI_API&quot; target=&quot;blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/X-%23000000.svg?style=for-the-badge&amp;amp;logo=X&amp;amp;logoColor=white&amp;amp;label=LocalAI_API&quot; alt=&quot;Follow LocalAI_API&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://discord.gg/uJAeKSAGDy&quot; target=&quot;blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/dynamic/json?color=blue&amp;amp;label=Discord&amp;amp;style=for-the-badge&amp;amp;query=approximate_member_count&amp;amp;url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FuJAeKSAGDy%3Fwith_counts%3Dtrue&amp;amp;logo=discord&quot; alt=&quot;Join LocalAI Discord Community&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/5539&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/5539&quot; alt=&quot;mudler%2FLocalAI | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;!-- Keep these links, translations synced daily. --&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://zdoc.app/de/mudler/LocalAI&quot;&gt;Deutsch&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/es/mudler/LocalAI&quot;&gt;Español&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/fr/mudler/LocalAI&quot;&gt;français&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/ja/mudler/LocalAI&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/ko/mudler/LocalAI&quot;&gt;한국어&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/pt/mudler/LocalAI&quot;&gt;Português&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/ru/mudler/LocalAI&quot;&gt;Русский&lt;/a&gt; | &lt;a href=&quot;https://zdoc.app/zh/mudler/LocalAI&quot;&gt;中文&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;LocalAI&lt;/strong&gt; is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;A small core, not a bundle.&lt;/strong&gt; Each backend wraps a best-in-class engine (llama.cpp, vLLM, whisper.cpp, stable-diffusion, MLX...) in its own image, pulled only when a model needs it. You install nothing you don&#39;t use.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Composable by design&lt;/strong&gt;: backends are separate and pulled on demand, so you install only what your model needs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open and extensible&lt;/strong&gt;: load any model, or build your own backend in any language against an open interface&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Drop-in API compatibility&lt;/strong&gt;: OpenAI, Anthropic, and ElevenLabs APIs across every backend&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Any model, any modality&lt;/strong&gt;: LLMs, vision, voice, image, and video behind one API&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Any hardware&lt;/strong&gt;: NVIDIA, AMD, Intel, Apple Silicon, Vulkan, or CPU-only&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-user ready&lt;/strong&gt;: API key auth, user quotas, role-based access&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built-in AI agents&lt;/strong&gt;: autonomous agents with tool use, RAG, MCP, and skills&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Privacy-first&lt;/strong&gt;: your data never leaves your infrastructure&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/mudler/LocalAI/master/docs/static/images/diagrams/composable-core.png&quot; alt=&quot;A small LocalAI core with backends (llama.cpp, vLLM, MLX, whisper.cpp, stable-diffusion, kokoro, parakeet.cpp...) plugged in as separate on-demand images&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Created by &lt;a href=&quot;https://github.com/mudler&quot;&gt;Ettore Di Giacinto&lt;/a&gt; and maintained by the &lt;a href=&quot;https://raw.githubusercontent.com/mudler/LocalAI/master/#team&quot;&gt;LocalAI team&lt;/a&gt;.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;a href=&quot;https://localai.io/&quot;&gt;📖 Documentation&lt;/a&gt; | &lt;a href=&quot;https://discord.gg/uJAeKSAGDy&quot;&gt;💬 Discord&lt;/a&gt; | &lt;a href=&quot;https://localai.io/basics/getting_started/&quot;&gt;💻 Quickstart&lt;/a&gt; | &lt;a href=&quot;https://models.localai.io/&quot;&gt;🖼️ Models&lt;/a&gt; | &lt;a href=&quot;https://localai.io/faq/&quot;&gt;❓FAQ&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Guided tour&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/08cbb692-57da-48f7-963d-2e7b43883c18&quot;&gt;https://github.com/user-attachments/assets/08cbb692-57da-48f7-963d-2e7b43883c18&lt;/a&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt; Click to see more! &lt;/summary&gt; 
 &lt;h4&gt;User and auth&lt;/h4&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/228fa9ad-81a3-4d43-bfb9-31557e14a36c&quot;&gt;https://github.com/user-attachments/assets/228fa9ad-81a3-4d43-bfb9-31557e14a36c&lt;/a&gt;&lt;/p&gt; 
 &lt;h4&gt;Agents&lt;/h4&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/6270b331-e21d-4087-a540-6290006b381a&quot;&gt;https://github.com/user-attachments/assets/6270b331-e21d-4087-a540-6290006b381a&lt;/a&gt;&lt;/p&gt; 
 &lt;h4&gt;Usage metrics per user&lt;/h4&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/cbb03379-23b4-4e3d-bd26-d152f057007f&quot;&gt;https://github.com/user-attachments/assets/cbb03379-23b4-4e3d-bd26-d152f057007f&lt;/a&gt;&lt;/p&gt; 
 &lt;h4&gt;Fine-tuning and Quantization&lt;/h4&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/5ba4ace9-d3df-4795-b7d4-b0b404ea71ee&quot;&gt;https://github.com/user-attachments/assets/5ba4ace9-d3df-4795-b7d4-b0b404ea71ee&lt;/a&gt;&lt;/p&gt; 
 &lt;h4&gt;WebRTC&lt;/h4&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/ed88e34c-fed3-4b83-8a67-4716a9feeb7b&quot;&gt;https://github.com/user-attachments/assets/ed88e34c-fed3-4b83-8a67-4716a9feeb7b&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;h3&gt;macOS&lt;/h3&gt; 
&lt;a href=&quot;https://github.com/mudler/LocalAI/releases/latest/download/LocalAI.dmg&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Download-macOS-blue?style=for-the-badge&amp;amp;logo=apple&amp;amp;logoColor=white&quot; alt=&quot;Download LocalAI for macOS&quot; /&gt; &lt;/a&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The DMG is not signed by Apple. After installing, run: &lt;code&gt;sudo xattr -d com.apple.quarantine /Applications/LocalAI.app&lt;/code&gt;. See &lt;a href=&quot;https://github.com/mudler/LocalAI/issues/6268&quot;&gt;#6268&lt;/a&gt; for details.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Containers (Docker, podman, ...)&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Already ran LocalAI before? Use &lt;code&gt;docker start -i local-ai&lt;/code&gt; to restart an existing container.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;CPU only:&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -ti --name local-ai -p 8080:8080 localai/localai:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;NVIDIA GPU:&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# CUDA 13
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-13

# CUDA 12
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-12

# NVIDIA Jetson ARM64 (CUDA 12, for AGX Orin and similar)
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-nvidia-l4t-arm64

# NVIDIA Jetson ARM64 (CUDA 13, for DGX Spark)
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-nvidia-l4t-arm64-cuda-13
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;AMD GPU (ROCm):&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -ti --name local-ai -p 8080:8080 --device=/dev/kfd --device=/dev/dri --group-add=video localai/localai:latest-gpu-hipblas
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Intel GPU (oneAPI):&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -ti --name local-ai -p 8080:8080 --device=/dev/dri/card1 --device=/dev/dri/renderD128 localai/localai:latest-gpu-intel
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Vulkan GPU:&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -ti --name local-ai -p 8080:8080 localai/localai:latest-gpu-vulkan
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Loading models&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# From the model gallery (see available models with `local-ai models list` or at https://models.localai.io)
local-ai run llama-3.2-1b-instruct:q4_k_m
# From Huggingface
local-ai run huggingface://TheBloke/phi-2-GGUF/phi-2.Q8_0.gguf
# From the Ollama OCI registry
local-ai run ollama://gemma:2b
# From a YAML config
local-ai run https://gist.githubusercontent.com/.../phi-2.yaml
# From a standard OCI registry (e.g., Docker Hub)
local-ai run oci://localai/phi-2:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To work with a running LocalAI server from the terminal, start the built-in agent from another shell. It answers questions, reads your files and runs commands on your machine, asking you to approve anything that changes state. Inside a session, &lt;code&gt;/models&lt;/code&gt; lists installed models and &lt;code&gt;/model &amp;lt;name&amp;gt;&lt;/code&gt; switches between them. See the &lt;a href=&quot;https://localai.io/docs/features/terminal-agent/&quot;&gt;Terminal agent&lt;/a&gt; docs.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Terminal 1
local-ai run llama-3.2-1b-instruct:q4_k_m

# Terminal 2
local-ai chat --model llama-3.2-1b-instruct:q4_k_m
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Automatic Backend Detection&lt;/strong&gt;: LocalAI automatically detects your GPU capabilities and downloads the appropriate backend. For advanced options, see &lt;a href=&quot;https://localai.io/features/gpu-acceleration/&quot;&gt;GPU Acceleration&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;For more details, see the &lt;a href=&quot;https://localai.io/basics/getting_started/&quot;&gt;Getting Started guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Latest News&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;June 2026&lt;/strong&gt;: New native biometric backends from the LocalAI team: &lt;a href=&quot;https://github.com/localai-org/voice-detect.cpp&quot;&gt;voice-detect.cpp&lt;/a&gt; for speaker recognition and voice analysis (ECAPA-TDNN, WeSpeaker, ERes2Net, CAM++, wav2vec2 age/gender/emotion) and &lt;a href=&quot;https://github.com/mudler/face-detect.cpp&quot;&gt;face-detect.cpp&lt;/a&gt; for face detection, recognition, demographics and anti-spoofing (SCRFD/ArcFace, YuNet/SFace). Both are from-scratch C++/ggml engines with no Python or onnxruntime at inference, self-contained GGUF weights, bit-exact parity with the reference, and GPU cuDNN parity, replacing the heavier Python &lt;code&gt;insightface&lt;/code&gt; and &lt;code&gt;speaker-recognition&lt;/code&gt; backends (&lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10441&quot;&gt;PR #10441&lt;/a&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;June 2026&lt;/strong&gt;: New &lt;a href=&quot;https://github.com/localai-org/localai-realtime-demo&quot;&gt;realtime voice assistant demo&lt;/a&gt; (a tiny Go client for the Realtime API with a full talk-back voice loop and tool calling), plus &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10176&quot;&gt;streaming of the realtime LLM / TTS / transcription pipeline stages&lt;/a&gt; and &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10231&quot;&gt;configurable WebRTC ICE candidates&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;June 2026&lt;/strong&gt;: Big speech push: the &lt;a href=&quot;https://github.com/mudler/parakeet.cpp&quot;&gt;parakeet.cpp&lt;/a&gt; ASR engine gains &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10207&quot;&gt;NeMo-faithful segment timestamps&lt;/a&gt;, a &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10199&quot;&gt;multilingual streaming Nemotron-3.5 model&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10112&quot;&gt;dynamic batching for concurrent transcription&lt;/a&gt; and &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10273&quot;&gt;CUDA graphs&lt;/a&gt;; the new &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10099&quot;&gt;CrispASR backend&lt;/a&gt; adds multi-architecture ASR + TTS, and &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10296&quot;&gt;60 Piper TTS voices across 42 languages&lt;/a&gt; land in the gallery (plus &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10172&quot;&gt;per-request TTS instructions and params&lt;/a&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;June 2026&lt;/strong&gt;: New backends and models: &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10264&quot;&gt;locate-anything.cpp&lt;/a&gt; for open-vocabulary object detection via ggml, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10201&quot;&gt;Ideogram4 image generation&lt;/a&gt; in stablediffusion-ggml, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10216&quot;&gt;llama.cpp video input&lt;/a&gt;, and the &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10215&quot;&gt;Gemma 4 QAT family with MTP speculative-decoding pairs&lt;/a&gt;. Plus an &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10226&quot;&gt;interactive CLI chat mode&lt;/a&gt; and &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10228&quot;&gt;RAG source citations in agent responses&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;June 2026&lt;/strong&gt;: Distributed mode hardening: &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10071&quot;&gt;prefix-cache-aware routing&lt;/a&gt;, a &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10104&quot;&gt;production-ready request router with auto-sized embedding/rerank batches&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10098&quot;&gt;ds4 layer-split distributed inference&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10159&quot;&gt;NATS JWT auth + TLS/mTLS&lt;/a&gt;, and &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/10109&quot;&gt;resumable file uploads&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;May 2026&lt;/strong&gt;: &lt;strong&gt;LocalAI 4.3.0&lt;/strong&gt; - &lt;code&gt;llama.cpp&lt;/code&gt; &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9925&quot;&gt;prompt cache on by default&lt;/a&gt; (repeated system prompts collapse from minutes to seconds), &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9823&quot;&gt;keyless cosign signing of backend OCI images&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9920&quot;&gt;per-API-key + per-user usage attribution&lt;/a&gt;, Distributed v3 with &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9968&quot;&gt;per-request replica routing&lt;/a&gt;. &lt;a href=&quot;https://github.com/mudler/LocalAI/releases/tag/v4.3.0&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;May 2026&lt;/strong&gt;: &lt;strong&gt;LocalAI 4.2.0&lt;/strong&gt; - LocalAI sees and hears: &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9500&quot;&gt;voice recognition&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9480&quot;&gt;face recognition + antispoofing liveness&lt;/a&gt;, speaker diarization. Plus &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9284&quot;&gt;drop-in Ollama API&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/9420&quot;&gt;video generation&lt;/a&gt;, redesigned UI with i18n + admin-configurable branding, vLLM at feature parity with llama.cpp, and 11 new backends. &lt;a href=&quot;https://github.com/mudler/LocalAI/releases/tag/v4.2.0&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;April 2026&lt;/strong&gt;: &lt;strong&gt;LocalAI 4.1.0&lt;/strong&gt; - LocalAI becomes a control tower: distributed cluster mode with VRAM-aware smart routing + autoscaling, multi-user platform with OIDC and API keys, per-user quotas with predictive analytics, in-UI fine-tuning with TRL (auto-export to GGUF), on-the-fly quantization backend, visual pipeline editor. &lt;a href=&quot;https://github.com/mudler/LocalAI/releases/tag/v4.1.0&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;March 2026&lt;/strong&gt;: &lt;strong&gt;LocalAI 4.0.0&lt;/strong&gt; - native agentic orchestration with the new &lt;a href=&quot;https://agenthub.localai.io&quot;&gt;Agenthub&lt;/a&gt; community hub, full React UI rewrite with Canvas mode, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/8947&quot;&gt;MCP Apps + client-side&lt;/a&gt; with tool streaming, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/8790&quot;&gt;WebRTC realtime audio&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/8801&quot;&gt;MLX-distributed&lt;/a&gt;. &lt;a href=&quot;https://github.com/mudler/LocalAI/releases/tag/v4.0.0&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;February 2026&lt;/strong&gt;: &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/6245&quot;&gt;Realtime API for audio-to-audio with tool calling&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/8396&quot;&gt;ACE-Step 1.5 support&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;January 2026&lt;/strong&gt;: &lt;strong&gt;LocalAI 3.10.0&lt;/strong&gt; — Anthropic API support, Open Responses API, video &amp;amp; image generation (LTX-2), unified GPU backends, tool streaming, Moonshine, Pocket-TTS. &lt;a href=&quot;https://github.com/mudler/LocalAI/releases/tag/v3.10.0&quot;&gt;Release notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;December 2025&lt;/strong&gt;: &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/7583&quot;&gt;Dynamic Memory Resource reclaimer&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/7584&quot;&gt;Automatic multi-GPU model fitting (llama.cpp)&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/7494&quot;&gt;Vibevoice backend&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;November 2025&lt;/strong&gt;: &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/7245&quot;&gt;Import models via URL&lt;/a&gt;, &lt;a href=&quot;https://github.com/mudler/LocalAI/pull/7325&quot;&gt;Multiple chats and history&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;October 2025&lt;/strong&gt;: &lt;a href=&quot;https://localai.io/docs/features/mcp/&quot;&gt;Model Context Protocol (MCP)&lt;/a&gt; support for agentic capabilities&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;September 2025&lt;/strong&gt;: New Launcher for macOS and Linux, extended backend support for Mac and Nvidia L4T, MLX-Audio, WAN 2.2&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;August 2025&lt;/strong&gt;: MLX, MLX-VLM, Diffusers, llama.cpp now supported on Apple Silicon&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;July 2025&lt;/strong&gt;: All backends migrated outside the main binary — &lt;a href=&quot;https://github.com/mudler/LocalAI/releases/tag/v3.2.0&quot;&gt;lightweight, modular architecture&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For older news and full release notes, see &lt;a href=&quot;https://github.com/mudler/LocalAI/releases&quot;&gt;GitHub Releases&lt;/a&gt; and the &lt;a href=&quot;https://localai.io/blog/&quot;&gt;blog&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/text-generation/&quot;&gt;Text generation&lt;/a&gt; (&lt;code&gt;llama.cpp&lt;/code&gt;, &lt;code&gt;transformers&lt;/code&gt;, &lt;code&gt;vllm&lt;/code&gt; ... &lt;a href=&quot;https://localai.io/model-compatibility/&quot;&gt;and more&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/text-to-audio/&quot;&gt;Text to Audio&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/audio-to-text/&quot;&gt;Audio to Text&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/image-generation&quot;&gt;Image generation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/openai-functions/&quot;&gt;OpenAI-compatible tools API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/openai-realtime/&quot;&gt;Realtime API&lt;/a&gt; (Speech-to-speech)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/embeddings/&quot;&gt;Embeddings generation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/constrained_grammars/&quot;&gt;Constrained grammars&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/models/&quot;&gt;Download models from Huggingface&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/gpt-vision/&quot;&gt;Vision API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/object-detection/&quot;&gt;Object Detection&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/reranker/&quot;&gt;Reranker API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/distribute/&quot;&gt;P2P Inferencing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/distributed-mode/&quot;&gt;Distributed Mode&lt;/a&gt; — Horizontal scaling with PostgreSQL + NATS&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/docs/features/mcp/&quot;&gt;Model Context Protocol (MCP)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/features/agents/&quot;&gt;Built-in Agents&lt;/a&gt; — Autonomous AI agents with tool use, RAG, skills, SSE streaming, and &lt;a href=&quot;https://agenthub.localai.io&quot;&gt;Agent Hub&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/backends/&quot;&gt;Backend Gallery&lt;/a&gt; — Install/remove backends on the fly via OCI images&lt;/li&gt; 
 &lt;li&gt;Voice Activity Detection (Silero-VAD)&lt;/li&gt; 
 &lt;li&gt;Integrated WebUI&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported Backends &amp;amp; Acceleration&lt;/h2&gt; 
&lt;p&gt;LocalAI supports &lt;strong&gt;60+ backends&lt;/strong&gt; including llama.cpp, vLLM, SGLang, transformers, whisper.cpp, diffusers, MLX, MLX-VLM, and many more. Hardware acceleration is available for &lt;strong&gt;NVIDIA&lt;/strong&gt; (CUDA 12/13), &lt;strong&gt;AMD&lt;/strong&gt; (ROCm), &lt;strong&gt;Intel&lt;/strong&gt; (oneAPI/SYCL), &lt;strong&gt;Apple Silicon&lt;/strong&gt; (Metal), &lt;strong&gt;Vulkan&lt;/strong&gt;, and &lt;strong&gt;NVIDIA Jetson&lt;/strong&gt; (L4T). All backends can be installed on-the-fly from the &lt;a href=&quot;https://localai.io/backends/&quot;&gt;Backend Gallery&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;See the full &lt;a href=&quot;https://localai.io/model-compatibility/&quot;&gt;Backend &amp;amp; Model Compatibility Table&lt;/a&gt; and &lt;a href=&quot;https://localai.io/features/gpu-acceleration/&quot;&gt;GPU Acceleration guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Backends built by us&lt;/h3&gt; 
&lt;p&gt;Most backends wrap a best-in-class upstream engine. A handful of them are native C/C++/GGML engines (no Python at inference) developed and maintained by the LocalAI project itself:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Backend&lt;/th&gt; 
   &lt;th&gt;What it does&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/mudler/vllm.cpp&quot;&gt;vllm.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;From-scratch C++20 port of vLLM for text generation: paged KV cache, continuous batching, prefix caching, safetensors + GGUF loading, engine-enforced structured output, on CPU, CUDA, Metal and Vulkan. Also serves MiniMax-H3 joint video+audio generation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/parakeet.cpp&quot;&gt;parakeet.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C++/GGML port of NVIDIA NeMo Parakeet ASR (tdt/ctc/rnnt/hybrid), with cache-aware streaming transcription&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/moss-transcribe.cpp&quot;&gt;moss-transcribe.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C++/GGML port of OpenMOSS MOSS-Transcribe-Diarize: joint long-form transcription, speaker diarization and timestamping in a single pass&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/moss-tts.cpp&quot;&gt;moss-tts.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C++/GGML port of the OpenMOSS MOSS-TTS family: text-to-speech (MOSS-TTS-Local v1.5, 48 kHz stereo) with reference-audio voice cloning, through the MOSS-Audio-Tokenizer neural codec&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/magpie-tts.cpp&quot;&gt;magpie-tts.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C++/GGML port of NVIDIA&#39;s Magpie TTS Multilingual 357M: 22.05 kHz mono text-to-speech in 5 voices and 9+ languages, with the NanoCodec neural codec and tokenizer/G2P embedded in a single GGUF&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/ced.cpp&quot;&gt;ced.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C++/GGML port of the CED audio-tagging models: sound-event classification (527-class AudioSet) over REST and the realtime API for live recognition&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/voice-detect.cpp&quot;&gt;voice-detect.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Speaker recognition and voice analysis (ECAPA-TDNN, WeSpeaker, ERes2Net, CAM++, wav2vec2 age/gender/emotion), replacing the Python speaker-recognition backend&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/voxtral-tts.c&quot;&gt;voxtral-tts.c&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Mistral Voxtral-4B-TTS text-to-speech in pure C: 20 preset voices across 9 languages, 24 kHz WAV output, no dependencies beyond libc&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/vibevoice.cpp&quot;&gt;vibevoice.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Native port of Microsoft VibeVoice for TTS (voice cloning) and long-form ASR with speaker diarization&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/rf-detr.cpp&quot;&gt;rf-detr.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Native RF-DETR object detection and instance segmentation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/locate-anything.cpp&quot;&gt;locate-anything.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Open-vocabulary object detection and visual grounding (LocateAnything-3B)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/depth-anything.cpp&quot;&gt;depth-anything.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Depth Anything 3 monocular metric depth + camera pose estimation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/face-detect.cpp&quot;&gt;face-detect.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Face detection, recognition, demographics and anti-spoofing (SCRFD/ArcFace, YuNet/SFace), replacing the Python insightface backend&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/free-splatter.cpp&quot;&gt;free-splatter.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Pose-free 3D reconstruction (FreeSplatter): turns a handful of plain photos into 3D Gaussians, no camera poses or GPU required&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/trellis2cpp&quot;&gt;trellis2.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;C++/GGML port of Microsoft TRELLIS.2: single-image to textured 3D mesh (GLB with PBR materials)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/privacy-filter.cpp&quot;&gt;privacy-filter.cpp&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Standalone GGML PII/NER token-classification engine powering LocalAI&#39;s PII redaction tier&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/localai-org/LocalVQE&quot;&gt;LocalVQE&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Joint acoustic echo cancellation, noise suppression, and dereverberation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/mudler/LocalAI&quot;&gt;local-store&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Local-first vector database for embeddings (shipped in-tree)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;We also maintain &lt;a href=&quot;https://github.com/localai-org/apex-quant&quot;&gt;apex-quant&lt;/a&gt;, a per-tensor, per-layer quantization recipe for Mixture-of-Experts models that exploits their structural sparsity to produce GGUFs matching or beating Q8_0 quality - and they run out of the box on stock llama.cpp.&lt;/p&gt; 
&lt;h2&gt;Resources&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/&quot;&gt;Documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/docs/advanced/fine-tuning/&quot;&gt;LLM fine-tuning guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/basics/build/&quot;&gt;Build from source&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/basics/getting_started/#run-localai-in-kubernetes&quot;&gt;Kubernetes installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/docs/integrations/&quot;&gt;Integrations &amp;amp; community projects&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=cMVNnlqwfw4&quot;&gt;Installation video walkthrough&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://localai.io/blog/&quot;&gt;Blog: release write-ups, benchmarks and engineering notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mudler/LocalAI-examples&quot;&gt;Examples&lt;/a&gt; — including the &lt;a href=&quot;https://github.com/localai-org/localai-realtime-demo&quot;&gt;realtime voice assistant demo&lt;/a&gt; (Go client for the Realtime API with tool calling)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Team&lt;/h2&gt; 
&lt;p&gt;LocalAI is maintained by a small team of humans, together with the wider community of contributors.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mudler&quot;&gt;Ettore Di Giacinto&lt;/a&gt;&lt;/strong&gt; — original author and project lead&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/richiejp&quot;&gt;Richard Palethorpe&lt;/a&gt;&lt;/strong&gt; — maintainer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;A huge thank you to everyone who contributes code, reviews PRs, files issues, and helps users in &lt;a href=&quot;https://discord.gg/uJAeKSAGDy&quot;&gt;Discord&lt;/a&gt; — LocalAI is a community-driven project and wouldn&#39;t exist without you. See the full &lt;a href=&quot;https://github.com/mudler/LocalAI/graphs/contributors&quot;&gt;contributors list&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Citation&lt;/h2&gt; 
&lt;p&gt;If you utilize this repository, data in a downstream project, please consider citing it with:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@misc{localai,
  author = {Ettore Di Giacinto},
  title = {LocalAI: The free, Open source OpenAI alternative},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/go-skynet/LocalAI}},
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Do you find LocalAI useful?&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Support the project by becoming &lt;a href=&quot;https://github.com/sponsors/mudler&quot;&gt;a backer or sponsor&lt;/a&gt;. Your logo will show up here with a link to your website.&lt;/p&gt; 
&lt;p&gt;A huge thank you to our generous sponsors who support this project covering CI expenses, and our &lt;a href=&quot;https://github.com/sponsors/mudler&quot;&gt;Sponsor list&lt;/a&gt;:&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.spectrocloud.com/&quot; target=&quot;blank&quot;&gt; &lt;img height=&quot;200&quot; src=&quot;https://github.com/user-attachments/assets/72eab1dd-8b93-4fc0-9ade-84db49f24962&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt; Past sponsors &lt;/summary&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.premai.io/&quot; target=&quot;blank&quot;&gt; &lt;img height=&quot;200&quot; src=&quot;https://github.com/mudler/LocalAI/assets/2420543/42e4ca83-661e-4f79-8e46-ae43689683d6&quot; /&gt; &lt;br /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;/details&gt; 
&lt;h3&gt;Individual sponsors&lt;/h3&gt; 
&lt;p&gt;A special thanks to individual sponsors, a full list is on &lt;a href=&quot;https://github.com/sponsors/mudler&quot;&gt;GitHub&lt;/a&gt; and &lt;a href=&quot;https://buymeacoffee.com/mudler&quot;&gt;buymeacoffee&lt;/a&gt;. Special shout out to &lt;a href=&quot;https://github.com/drikster80&quot;&gt;drikster80&lt;/a&gt; for being generous. Thank you everyone!&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;LocalAI is a community-driven project created by &lt;a href=&quot;https://github.com/mudler/&quot;&gt;Ettore Di Giacinto&lt;/a&gt; and maintained by the &lt;a href=&quot;https://raw.githubusercontent.com/mudler/LocalAI/master/#team&quot;&gt;LocalAI team&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;MIT - Author Ettore Di Giacinto &lt;a href=&quot;mailto:mudler@localai.io&quot;&gt;mudler@localai.io&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;p&gt;LocalAI couldn&#39;t have been built without the help of great software already available from the community. Thank you!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggerganov/llama.cpp&quot;&gt;llama.cpp&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tatsu-lab/stanford_alpaca&quot;&gt;https://github.com/tatsu-lab/stanford_alpaca&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cornelk/llama-go&quot;&gt;https://github.com/cornelk/llama-go&lt;/a&gt; for the initial ideas&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/antimatter15/alpaca.cpp&quot;&gt;https://github.com/antimatter15/alpaca.cpp&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/EdVince/Stable-Diffusion-NCNN&quot;&gt;https://github.com/EdVince/Stable-Diffusion-NCNN&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggerganov/whisper.cpp&quot;&gt;https://github.com/ggerganov/whisper.cpp&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rhasspy/piper&quot;&gt;https://github.com/rhasspy/piper&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/exo-explore/exo&quot;&gt;exo&lt;/a&gt; for the MLX distributed auto-parallel sharding implementation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;p&gt;This is a community project, a special thanks to our contributors! &lt;a href=&quot;https://github.com/go-skynet/LocalAI/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=go-skynet/LocalAI&quot; /&gt; &lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>velero-io/velero</title>
      <link>https://github.com/velero-io/velero</link>
      <description>&lt;p&gt;Backup and migrate Kubernetes applications and their persistent volumes&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://velero.io/docs/main/img/velero.png&quot; alt=&quot;100&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/velero-io/velero/actions?query=workflow%3A%22Main+CI%22&quot;&gt;&lt;img src=&quot;https://github.com/velero-io/velero/workflows/Main%20CI/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/3811&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/3811/badge&quot; alt=&quot;CII Best Practices&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/velero-io/velero&quot; alt=&quot;GitHub release (latest SemVer)&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Velero (formerly Heptio Ark) gives you tools to back up and restore your Kubernetes cluster resources and persistent volumes. You can run Velero with a public cloud platform or on-premises.&lt;/p&gt; 
&lt;p&gt;Velero lets you:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Take backups of your cluster and restore in case of loss.&lt;/li&gt; 
 &lt;li&gt;Migrate cluster resources to other clusters.&lt;/li&gt; 
 &lt;li&gt;Replicate your production cluster to development and testing clusters.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Velero consists of:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;A server that runs on your cluster&lt;/li&gt; 
 &lt;li&gt;A command-line client that runs locally&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://velero.io/docs/&quot;&gt;The documentation&lt;/a&gt; provides a getting started guide and information about building from source, architecture, extending Velero and more.&lt;/p&gt; 
&lt;p&gt;Please use the version selector at the top of the site to ensure you are using the appropriate documentation for your version of Velero.&lt;/p&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;p&gt;If you encounter issues, review the &lt;a href=&quot;https://velero.io/docs/troubleshooting&quot;&gt;troubleshooting docs&lt;/a&gt;, &lt;a href=&quot;https://github.com/velero-io/velero/issues&quot;&gt;file an issue&lt;/a&gt;, or talk to us on the &lt;a href=&quot;https://kubernetes.slack.com/messages/velero&quot;&gt;#velero channel&lt;/a&gt; on the Kubernetes Slack server.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;If you are ready to jump in and test, add code, or help with documentation, follow the instructions on our &lt;a href=&quot;https://velero.io/docs/start-contributing&quot;&gt;Start contributing&lt;/a&gt; documentation for guidance on how to setup Velero for development.&lt;/p&gt; 
&lt;h2&gt;Changelog&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/velero-io/velero/releases&quot;&gt;the list of releases&lt;/a&gt; to find out about feature changes.&lt;/p&gt; 
&lt;h3&gt;Velero compatibility matrix&lt;/h3&gt; 
&lt;p&gt;The following is a list of the supported Kubernetes versions for each Velero version.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Velero version&lt;/th&gt; 
   &lt;th&gt;Expected Kubernetes version compatibility&lt;/th&gt; 
   &lt;th&gt;Tested on Kubernetes version&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;1.18&lt;/td&gt; 
   &lt;td&gt;1.18-latest&lt;/td&gt; 
   &lt;td&gt;1.33.7, 1.34.1, and 1.35.0&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;1.17&lt;/td&gt; 
   &lt;td&gt;1.18-latest&lt;/td&gt; 
   &lt;td&gt;1.31.7, 1.32.3, 1.33.1, and 1.34.0&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;1.16&lt;/td&gt; 
   &lt;td&gt;1.18-latest&lt;/td&gt; 
   &lt;td&gt;1.31.4, 1.32.3, and 1.33.0&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;1.15&lt;/td&gt; 
   &lt;td&gt;1.18-latest&lt;/td&gt; 
   &lt;td&gt;1.28.8, 1.29.8, 1.30.4 and 1.31.1&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;1.14&lt;/td&gt; 
   &lt;td&gt;1.18-latest&lt;/td&gt; 
   &lt;td&gt;1.27.9, 1.28.9, and 1.29.4&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Velero supports IPv4, IPv6, and dual stack environments. Support for this was tested against Velero v1.8.&lt;/p&gt; 
&lt;p&gt;The Velero maintainers are continuously working to expand testing coverage, but are not able to test every combination of Velero and supported Kubernetes versions for each Velero release. The table above is meant to track the current testing coverage and the expected supported Kubernetes versions for each Velero version.&lt;/p&gt; 
&lt;p&gt;If you are interested in using a different version of Kubernetes with a given Velero version, we&#39;d recommend that you perform testing before installing or upgrading your environment. For full information around capabilities within a release, also see the Velero &lt;a href=&quot;https://github.com/velero-io/velero/releases&quot;&gt;release notes&lt;/a&gt; or Kubernetes &lt;a href=&quot;https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG&quot;&gt;release notes&lt;/a&gt;. See the Velero &lt;a href=&quot;https://velero.io/docs/latest/support-process/&quot;&gt;support page&lt;/a&gt; for information about supported versions of Velero.&lt;/p&gt; 
&lt;p&gt;For each release, Velero maintainers run the test to ensure the upgrade path from n-2 minor release. For example, before the release of v1.10.x, the test will verify that the backup created by v1.9.x and v1.8.x can be restored using the build to be tagged as v1.10.x.&lt;/p&gt; 
&lt;h2&gt;Cloud Native Computing Foundation&lt;/h2&gt; 
&lt;!-- remove sandbox once promoted --&gt; 
&lt;p&gt;Velero is a &lt;a href=&quot;https://www.cncf.io/&quot;&gt;Cloud Native Computing Foundation&lt;/a&gt; sandbox project.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.cncf.io/&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cncf/artwork/main/other/cncf/horizontal/color/cncf-color.svg?sanitize=true&quot; alt=&quot;Cloud Native Computing Foundation logo&quot; width=&quot;300&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Copyright Contributors to Velero, established as Velero a Series of LF Projects, LLC. For website terms of use, trademark policy and other project policies please see &lt;a href=&quot;https://lfprojects.org/policies/&quot;&gt;https://lfprojects.org/policies/&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>superplanehq/superplane</title>
      <link>https://github.com/superplanehq/superplane</link>
      <description>&lt;p&gt;The open source control plane for agentic engineering.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;SuperPlane&lt;/h1&gt; 
&lt;p&gt;SuperPlane is an open source automation engine for AI-driven engineering.&lt;/p&gt; 
&lt;p&gt;It lets you orchestrate engineering workflows across the tools you use — such as Git, LLMs, CI/CD, observability, incident tools, and infrastructure — with durable execution, approvals, and operational UI.&lt;/p&gt; 
&lt;p&gt;SuperPlane executes your processes deterministically, providing the exact guardrails both humans and AI need to safely interact with your systems.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/screenshot.png&quot; alt=&quot;SuperPlane screenshot&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Project status&lt;/h2&gt; 
&lt;p&gt; &lt;a href=&quot;https://superplanehq.semaphoreci.com/projects/superplane&quot;&gt;&lt;img src=&quot;https://superplanehq.semaphoreci.com/badges/superplane/branches/main.svg?style=shields&quot; alt=&quot;CI Status on Semaphore&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/superplanehq/superplane/pulse&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/commit-activity/m/superplanehq/superplane&quot; alt=&quot;GitHub commit activity&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/KC78eCNsnw&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1409914582239023200?label=discord&quot; alt=&quot;Discord server&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;SuperPlane is in &lt;strong&gt;beta&lt;/strong&gt;. Self-host the core engine (&lt;a href=&quot;https://docs.superplane.com/installation/overview/&quot;&gt;installation guide&lt;/a&gt;) or use &lt;a href=&quot;https://app.superplane.com&quot;&gt;SuperPlane Cloud&lt;/a&gt; for managed runners and one-click app installs. Core primitives and integrations are maturing; breaking changes are possible. Report issues on &lt;a href=&quot;https://github.com/superplanehq/superplane/issues/new&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;What it does&lt;/h2&gt; 
&lt;p&gt;SuperPlane orchestrates your existing stack into git-backed &lt;strong&gt;apps&lt;/strong&gt; with durable execution — workflows too complex for a single script or CI job.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Apps&lt;/strong&gt;: A deployable unit combining a workflow graph, custom console UI, app-scoped memory, and deterministic execution. Versioned in git (&lt;code&gt;canvas.yaml&lt;/code&gt;, &lt;code&gt;console.yaml&lt;/code&gt;); defines guardrails for AI agents and human operators.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Event-driven orchestration&lt;/strong&gt;: Multi-step workflows across your Git, CI/CD, observability, incident tools, and notifications — triggered by webhooks, schedules, and tool events, with approvals, policy checks, and human-in-the-loop steps.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Console dashboards&lt;/strong&gt;: Define your own per-app operational UI as a dynamic grid of panels. Use it to display KPIs, tables, charts, runbooks, pinned nodes, and workflow controls, backed by live data from memory, runs, and executions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Agents &amp;amp; operators&lt;/strong&gt;: Built-in per-app agent to design workflows and debug runs; CLI and &lt;a href=&quot;https://github.com/superplanehq/skills&quot;&gt;skills&lt;/a&gt; for external coding agents. Same RBAC on all paths.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How it works&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Canvases&lt;/strong&gt;: A graph of steps and their dependencies; a single canvas can express multiple workflows and run them concurrently.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Components&lt;/strong&gt;: Each node is a trigger or action, built-in or integration-backed that performs a specific task (for example: deploy a service, open an incident, post a notification, wait for a condition, require approval, etc.).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Events &amp;amp; triggers&lt;/strong&gt;: Incoming events match triggers and start runs with the event payload as input.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Runs &amp;amp; durable execution&lt;/strong&gt;: Runs, run items, and payloads are tracked across restarts; failed steps can resume without custom retry logic.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Memory&lt;/strong&gt;: App-scoped JSON storage that persists across runs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Example use cases&lt;/h3&gt; 
&lt;p&gt;A few concrete things teams build with SuperPlane:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;PR preview environments&lt;/strong&gt;: on pull request, provision an ephemeral environment, run tests, and post the live URL back to the PR.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Policy-gated production deploy&lt;/strong&gt;: when CI finishes green, hold outside business hours, require on-call + product approval, then trigger the deploy.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Progressive delivery (10% → 50% → 100%)&lt;/strong&gt;: deploy in waves, wait/verify at each step, and rollback on failure with an approval gate.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Release train with a multi-repo ship set&lt;/strong&gt;: wait for tags/builds from a set of services, fan-in once all are ready, then dispatch a coordinated deploy.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;“First 5 minutes” incident triage&lt;/strong&gt;: on incident created, fetch context in parallel (recent deploys + health signals), generate an evidence pack, and open an issue.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quick start&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Local (demo container):&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;docker pull ghcr.io/superplanehq/superplane-demo:stable
docker run --rm -p 3000:3000 -v spdata:/app/data -ti ghcr.io/superplanehq/superplane-demo:stable
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Cloud:&lt;/strong&gt; Sign up at &lt;a href=&quot;https://app.superplane.com&quot;&gt;app.superplane.com&lt;/a&gt; (&lt;a href=&quot;https://superplane.com/blog/superplane-cloud-beta/&quot;&gt;cloud beta overview&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;For a guided first workflow, see the &lt;a href=&quot;https://docs.superplane.com/get-started/quickstart/&quot;&gt;quick start guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Supported Integrations&lt;/h2&gt; 
&lt;p&gt;SuperPlane integrates with the tools you already use. Each integration provides triggers (events that start workflows) and components (actions you can run).&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;View the full list in our &lt;a href=&quot;https://docs.superplane.com/components/&quot;&gt;documentation&lt;/a&gt;. Missing a provider? &lt;a href=&quot;https://github.com/superplanehq/superplane/issues/new&quot;&gt;Open an issue&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;AI &amp;amp; LLM&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/claude/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/claude.svg?sanitize=true&quot; alt=&quot;Claude&quot; /&gt;&lt;br /&gt;Claude&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/cursor/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/cursor.svg?sanitize=true&quot; alt=&quot;Cursor&quot; /&gt;&lt;br /&gt;Cursor&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/openai/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/openai.svg?sanitize=true&quot; alt=&quot;OpenAI&quot; /&gt;&lt;br /&gt;OpenAI&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/perplexity/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/perplexity.svg?sanitize=true&quot; alt=&quot;Perplexity&quot; /&gt;&lt;br /&gt;Perplexity&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Version Control &amp;amp; CI/CD&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/bitbucket/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/bitbucket.svg?sanitize=true&quot; alt=&quot;Bitbucket&quot; /&gt;&lt;br /&gt;Bitbucket&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/circleci/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/circleci.svg?sanitize=true&quot; alt=&quot;CircleCI&quot; /&gt;&lt;br /&gt;CircleCI&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/github/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/github.svg?sanitize=true&quot; alt=&quot;GitHub&quot; /&gt;&lt;br /&gt;GitHub&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/gitlab/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/gitlab.svg?sanitize=true&quot; alt=&quot;GitLab&quot; /&gt;&lt;br /&gt;GitLab&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/harness/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/harness.svg?sanitize=true&quot; alt=&quot;Harness&quot; /&gt;&lt;br /&gt;Harness&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/octopusdeploy/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/octopus.svg?sanitize=true&quot; alt=&quot;Octopus Deploy&quot; /&gt;&lt;br /&gt;Octopus Deploy&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/render/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/render.svg?sanitize=true&quot; alt=&quot;Render&quot; /&gt;&lt;br /&gt;Render&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/semaphore/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/semaphore-logo-sign-black.svg?sanitize=true&quot; alt=&quot;Semaphore&quot; /&gt;&lt;br /&gt;Semaphore&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Cloud &amp;amp; Infrastructure&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/aws/#ecr-%E2%80%A2-on-image-push&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/aws.ecr.svg?sanitize=true&quot; alt=&quot;AWS ECR&quot; /&gt;&lt;br /&gt;AWS ECR&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/aws/#lambda-%E2%80%A2-run-function&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/aws.lambda.svg?sanitize=true&quot; alt=&quot;AWS Lambda&quot; /&gt;&lt;br /&gt;AWS Lambda&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/aws/#code-artifact-%E2%80%A2-on-package-version&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/aws.codeartifact.svg?sanitize=true&quot; alt=&quot;AWS CodeArtifact&quot; /&gt;&lt;br /&gt;AWS CodeArtifact&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/aws/#cloud-watch-%E2%80%A2-on-alarm&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/aws.cloudwatch.svg?sanitize=true&quot; alt=&quot;AWS CloudWatch&quot; /&gt;&lt;br /&gt;AWS CloudWatch&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/aws/#sns-%E2%80%A2-on-topic-message&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/aws.sns.svg?sanitize=true&quot; alt=&quot;AWS SNS&quot; /&gt;&lt;br /&gt;AWS SNS&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/googlecloud/#cloud-build-%E2%80%A2-create-build&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/cloud_build.svg?sanitize=true&quot; alt=&quot;GCP Cloud Build&quot; /&gt;&lt;br /&gt;GCP Cloud Build&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/googlecloud/#cloud-functions-%E2%80%A2-invoke-function&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/gcp.cloudrun.svg?sanitize=true&quot; alt=&quot;GCP Cloud Functions&quot; /&gt;&lt;br /&gt;GCP Cloud Functions&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/googlecloud/#compute-%E2%80%A2-on-vm-instance&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/gcp.svg?sanitize=true&quot; alt=&quot;GCP Compute&quot; /&gt;&lt;br /&gt;GCP Compute&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/cloudflare/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/cloudflare.svg?sanitize=true&quot; alt=&quot;Cloudflare&quot; /&gt;&lt;br /&gt;Cloudflare&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/digitalocean/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/digitalocean.svg?sanitize=true&quot; alt=&quot;DigitalOcean&quot; /&gt;&lt;br /&gt;DigitalOcean&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/dockerhub/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/docker.svg?sanitize=true&quot; alt=&quot;DockerHub&quot; /&gt;&lt;br /&gt;DockerHub&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/hetznercloud/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/hetzner.svg?sanitize=true&quot; alt=&quot;Hetzner Cloud&quot; /&gt;&lt;br /&gt;Hetzner Cloud&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/microsoftazure/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/azure.svg?sanitize=true&quot; alt=&quot;Azure&quot; /&gt;&lt;br /&gt;Azure&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/oraclecloudinfrastructure/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/oci.svg?sanitize=true&quot; alt=&quot;Oracle Cloud Infrastructure&quot; /&gt;&lt;br /&gt;OCI&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/coolify/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/coolify.svg?sanitize=true&quot; alt=&quot;Coolify&quot; /&gt;&lt;br /&gt;Coolify&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Observability&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/datadog/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/datadog.svg?sanitize=true&quot; alt=&quot;DataDog&quot; /&gt;&lt;br /&gt;DataDog&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/dash0/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/dash0.svg?sanitize=true&quot; alt=&quot;Dash0&quot; /&gt;&lt;br /&gt;Dash0&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/grafana/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/grafana.svg?sanitize=true&quot; alt=&quot;Grafana&quot; /&gt;&lt;br /&gt;Grafana&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/honeycomb/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/honeycomb.svg?sanitize=true&quot; alt=&quot;Honeycomb&quot; /&gt;&lt;br /&gt;Honeycomb&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/logfire/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/logfire.svg?sanitize=true&quot; alt=&quot;Logfire&quot; /&gt;&lt;br /&gt;Logfire&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/newrelic/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/newrelic.svg?sanitize=true&quot; alt=&quot;New Relic&quot; /&gt;&lt;br /&gt;New Relic&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/prometheus/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/prometheus.svg?sanitize=true&quot; alt=&quot;Prometheus&quot; /&gt;&lt;br /&gt;Prometheus&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/elastic/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/elastic.svg?sanitize=true&quot; alt=&quot;Elastic&quot; /&gt;&lt;br /&gt;Elastic&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/sentry/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/sentry.svg?sanitize=true&quot; alt=&quot;Sentry&quot; /&gt;&lt;br /&gt;Sentry&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Incident Management&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/firehydrant/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/firehydrant.svg?sanitize=true&quot; alt=&quot;FireHydrant&quot; /&gt;&lt;br /&gt;FireHydrant&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/incident/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/incident.svg?sanitize=true&quot; alt=&quot;Incident.io&quot; /&gt;&lt;br /&gt;Incident.io&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/pagerduty/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/pagerduty.svg?sanitize=true&quot; alt=&quot;PagerDuty&quot; /&gt;&lt;br /&gt;PagerDuty&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/rootly/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/rootly.svg?sanitize=true&quot; alt=&quot;Rootly&quot; /&gt;&lt;br /&gt;Rootly&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/statuspage/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/statuspage.svg?sanitize=true&quot; alt=&quot;Statuspage&quot; /&gt;&lt;br /&gt;Statuspage&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Communication&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/discord/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/discord.svg?sanitize=true&quot; alt=&quot;Discord&quot; /&gt;&lt;br /&gt;Discord&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/sendgrid/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/sendgrid.svg?sanitize=true&quot; alt=&quot;SendGrid&quot; /&gt;&lt;br /&gt;SendGrid&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/slack/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/slack.svg?sanitize=true&quot; alt=&quot;Slack&quot; /&gt;&lt;br /&gt;Slack&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/smtp/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/smtp.svg?sanitize=true&quot; alt=&quot;SMTP&quot; /&gt;&lt;br /&gt;SMTP&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/microsoftteams/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/teams.svg?sanitize=true&quot; alt=&quot;Microsoft Teams&quot; /&gt;&lt;br /&gt;Microsoft Teams&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/telegram/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/telegram.svg?sanitize=true&quot; alt=&quot;Telegram&quot; /&gt;&lt;br /&gt;Telegram&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Ticketing&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/jira/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/jira.svg?sanitize=true&quot; alt=&quot;Jira&quot; /&gt;&lt;br /&gt;Jira&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/servicenow/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/servicenow.svg?sanitize=true&quot; alt=&quot;ServiceNow&quot; /&gt;&lt;br /&gt;ServiceNow&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;Developer Tools&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/cloudsmith/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/cloudsmith.svg?sanitize=true&quot; alt=&quot;Cloudsmith&quot; /&gt;&lt;br /&gt;Cloudsmith&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/daytona/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/daytona.svg?sanitize=true&quot; alt=&quot;Daytona&quot; /&gt;&lt;br /&gt;Daytona&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/jfrogartifactory/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/jfrog-artifactory.svg?sanitize=true&quot; alt=&quot;JFrog Artifactory&quot; /&gt;&lt;br /&gt;JFrog Artifactory&lt;/a&gt;&lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;a href=&quot;https://docs.superplane.com/components/launchdarkly/&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;40&quot; src=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/web_src/src/assets/icons/integrations/launchdarkly.svg?sanitize=true&quot; alt=&quot;LaunchDarkly&quot; /&gt;&lt;br /&gt;LaunchDarkly&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;Security&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;RBAC&lt;/strong&gt; and &lt;strong&gt;API keys&lt;/strong&gt; for programmatic access — see &lt;a href=&quot;https://docs.superplane.com/concepts/access-control/&quot;&gt;access control&lt;/a&gt; and &lt;a href=&quot;https://docs.superplane.com/concepts/service-accounts/&quot;&gt;API keys&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Secrets&lt;/strong&gt; stored encrypted — see &lt;a href=&quot;https://docs.superplane.com/concepts/secrets/&quot;&gt;secrets&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Production installation&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Footprint:&lt;/strong&gt; PostgreSQL, RabbitMQ, and the SuperPlane application (bundled in the single-host Docker Compose installer). Deploy on a single Linux host or Kubernetes (GKE, EKS) with external PostgreSQL. See the &lt;a href=&quot;https://docs.superplane.com/installation/overview/&quot;&gt;installation overview&lt;/a&gt; for topology-specific upgrade paths.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.superplane.com/installation/overview/#single-host-installation&quot;&gt;Single Host Installation&lt;/a&gt;&lt;/strong&gt; — AWS EC2, GCP Compute Engine, Hetzner, DigitalOcean, Linode, or any Linux server&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.superplane.com/installation/overview/#kubernetes&quot;&gt;Kubernetes Installation&lt;/a&gt;&lt;/strong&gt; — GKE, EKS, or any Kubernetes cluster&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Installation admins can enable private network access during owner setup or later in &lt;code&gt;/admin/settings&lt;/code&gt; when SuperPlane needs to reach tools inside a VPC, private Kubernetes cluster, or another closed network. Environment variables still take precedence: set &lt;code&gt;BLOCKED_HTTP_HOSTS&lt;/code&gt; or &lt;code&gt;BLOCKED_PRIVATE_IP_RANGES&lt;/code&gt; to override the UI-controlled policy, and set either variable to an empty value to disable that specific block list entirely.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome your bug reports, ideas for improvement, and focused PRs.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Read the &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/superplanehq/superplane/main/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt;&lt;/strong&gt; to get started.&lt;/li&gt; 
 &lt;li&gt;Issues: use GitHub issues for bugs and feature requests.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Apache License 2.0. See &lt;code&gt;LICENSE&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://discord.superplane.com&quot;&gt;Discord&lt;/a&gt;&lt;/strong&gt; - Join our community for discussions, questions, and collaboration&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://x.com/superplanehq&quot;&gt;X&lt;/a&gt;&lt;/strong&gt; - Follow us for updates and announcements&lt;/li&gt; 
&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>seakee/CPA-Manager-Plus</title>
      <link>https://github.com/seakee/CPA-Manager-Plus</link>
      <description>&lt;p&gt;A self-hosted CPA / CLIProxyAPI management panel and AI gateway observability dashboard for requests, usage, cost, quota, failures, and account health.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;CPA Manager Plus&lt;/h1&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/seakee/CPA-Manager-Plus?style=flat-square&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/seakee/CPA-Manager-Plus?style=flat-square&amp;amp;color=blue&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/seakee/cpa-manager-plus&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/seakee/cpa-manager-plus?style=flat-square&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/seakee/CPA-Manager-Plus?style=flat-square&amp;amp;label=stars&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;A self-hosted CPA / CLIProxyAPI management panel and AI gateway observability dashboard for requests, usage, cost, quota, failures, and account health.&lt;/p&gt; 
 &lt;p&gt;Operate providers, credentials, OAuth, plugins, and configuration while keeping persistent request history, cost analytics, and account automation in local storage.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/README_CN.md&quot;&gt;中文&lt;/a&gt; ｜ &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/&quot;&gt;Live Demo&lt;/a&gt; ｜ &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/&quot;&gt;Documentation&lt;/a&gt; ｜ &lt;a href=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/#quick-start&quot;&gt;Install&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;What Can CPAMP Help You Answer?&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Why are requests failing?&lt;/strong&gt; Inspect failure rates, status codes, affected models/accounts, and redacted evidence in persistent request history.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Where is the cost going?&lt;/strong&gt; Break down tokens and estimated cost by model, provider, account, API key, project, channel, and time range.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Are accounts and quotas healthy?&lt;/strong&gt; Review credential state, quota windows, reset evidence, and controlled automation for Codex and xAI accounts.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Dashboard&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/home.png&quot; alt=&quot;CPA CLIProxyAPI management and observability dashboard&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Request Monitoring&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/monitoring.png&quot; alt=&quot;CPA request monitoring and failure diagnosis dashboard&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Usage Analytics&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/usage-analytics.png&quot; alt=&quot;CPA usage and cost analytics by model and account&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Account Health&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/codex-inspection.png&quot; alt=&quot;Codex and xAI account inspection and quota health&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;Which Panel Should You Choose?&lt;/h2&gt; 
&lt;p&gt;CPA / CLIProxyAPI can serve either the official Management Center or the CPAMP Lightweight Panel directly on &lt;code&gt;:8317&lt;/code&gt;. The lightweight panel replaces the official UI without adding another service. Deploy CPAMP Full Mode when you also need persistent observability and long-running operations.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Option&lt;/th&gt; 
   &lt;th&gt;Best for&lt;/th&gt; 
   &lt;th&gt;Entry&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Official &lt;a href=&quot;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&quot;&gt;CLI Proxy API Management Center&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Keeping the upstream UI maintained by the CPA project&lt;/td&gt; 
   &lt;td&gt;CPA &lt;code&gt;:8317/management.html&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CPAMP Lightweight Panel&lt;/td&gt; 
   &lt;td&gt;Replacing only the UI without another service or database&lt;/td&gt; 
   &lt;td&gt;CPA &lt;code&gt;:8317/management.html&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CPAMP Full Mode&lt;/td&gt; 
   &lt;td&gt;Request history, cost analytics, inspection, and automation&lt;/td&gt; 
   &lt;td&gt;Manager Server &lt;code&gt;:18317/management.html&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;See &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/choosing-a-panel.html&quot;&gt;Choosing A CPA Panel&lt;/a&gt; for the comparison, or &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/deployment/cpa-panel.html&quot;&gt;install the CPAMP Lightweight Panel&lt;/a&gt; directly in CPA.&lt;/p&gt; 
&lt;h2&gt;Core Capabilities&lt;/h2&gt; 
&lt;h3&gt;CPA Gateway Management&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Manage CPA provider configurations, including Gemini, Codex, Claude, Vertex, xAI, and OpenAI-compatible providers.&lt;/li&gt; 
 &lt;li&gt;Maintain auth files, OAuth logins, API keys, model aliases, priorities, plugins, logs, and system settings.&lt;/li&gt; 
 &lt;li&gt;Import official Sub2API OpenAI OAuth exports and split multiple accounts into separate CPA Codex auth files.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Request Monitoring And Failure Diagnosis&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Persist requests from the CPA usage queue in local SQLite and search account, client API key, and realtime request views.&lt;/li&gt; 
 &lt;li&gt;Inspect status, latency, token, cache, trace, and redacted failure evidence without exposing raw failure bodies.&lt;/li&gt; 
 &lt;li&gt;Export or import request history as JSONL.&lt;/li&gt; 
 &lt;li&gt;Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/monitoring&quot;&gt;Monitoring Demo&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Cost And Usage Analytics&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Break down calls, tokens, cost, latency, and failures by model, provider, account, credential, API key, project, channel, and time range.&lt;/li&gt; 
 &lt;li&gt;Track input, output, reasoning, cache, service tier, and long-context pricing semantics.&lt;/li&gt; 
 &lt;li&gt;Sync model prices from models.dev first, with LiteLLM and OpenRouter fallbacks plus local overrides for aliases or internal models.&lt;/li&gt; 
 &lt;li&gt;Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/usage-analytics&quot;&gt;Usage Analytics Demo&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Account Health, Quota, And Automation&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Inspect Codex and xAI accounts locally or on a Manager Server schedule.&lt;/li&gt; 
 &lt;li&gt;Read quota windows, reset evidence, credential state, workspace state, and provider-specific health signals when available.&lt;/li&gt; 
 &lt;li&gt;Apply controlled quota cooldowns and route credential failures into an account action queue for review and recovery.&lt;/li&gt; 
 &lt;li&gt;Open the unified &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/accounts&quot;&gt;Accounts Demo&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Production Operations&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run CPAMP Full Mode as one Docker container or a native Linux, macOS, or Windows package for amd64/arm64; the full stack can run alongside CPA.&lt;/li&gt; 
 &lt;li&gt;Keep request history, Manager configuration, automation state, and model prices in local files with no account registration or telemetry SDK.&lt;/li&gt; 
 &lt;li&gt;Back up SQLite files together with &lt;code&gt;data.key&lt;/code&gt; to preserve encrypted CPA Management Keys.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Want to preview the interface first? Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/&quot;&gt;Live Demo&lt;/a&gt;. The demo uses fictional data only. It is not a deployment or runtime mode and cannot connect to, manage, or monitor a real CPA instance.&lt;/p&gt; 
&lt;p&gt;CPAMP manages and observes traffic through CPA / CLIProxyAPI. It is not a replacement proxy and does not forward model traffic by itself.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;h3&gt;Installer&lt;/h3&gt; 
&lt;p&gt;For a guided full-stack or CPAMP-only deployment:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSLO https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/bin/install-cpamp.sh
bash install-cpamp.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Preview without deploying:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CPAMP_DRY_RUN=1 bash install-cpamp.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/deployment/installer.html&quot;&gt;One-Click Installer&lt;/a&gt; for upgrade, repair, and admin-key recovery behavior.&lt;/p&gt; 
&lt;h3&gt;CPA + CPAMP Together&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  cli-proxy-api:
    image: eceasy/cli-proxy-api:latest
    restart: unless-stopped
    ports:
      - &#39;8317:8317&#39;
    volumes:
      - cpa-data:/app/data

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

volumes:
  cpa-data:
  cpa-manager-plus-data:
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;code&gt;http://&amp;lt;host&amp;gt;:18317/management.html&lt;/code&gt;, retrieve the CPAMP Admin Key from the Manager Server log, then enter the CPA URL and CPA Management Key during setup.&lt;/p&gt; 
&lt;h3&gt;CPAMP Only&lt;/h3&gt; 
&lt;p&gt;If CPA is already running:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  --name cpa-manager-plus \
  --restart unless-stopped \
  -p 18317:18317 \
  -v cpa-manager-plus-data:/data \
  seakee/cpa-manager-plus:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Recommended CPA version: &lt;code&gt;v7.1.39+&lt;/code&gt;. The HTTP usage queue needs &lt;code&gt;v6.10.8+&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Task&lt;/th&gt; 
   &lt;th&gt;Guide&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Choose the right panel and deployment mode&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/choosing-a-panel.html&quot;&gt;Choosing A CPA Panel&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Replace the official UI without deploying another service&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/deployment/cpa-panel.html&quot;&gt;CPAMP Lightweight Panel&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Install and complete first setup&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/getting-started.html&quot;&gt;Getting Started&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Understand supported features and modes&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/reference/capability-matrix.html&quot;&gt;Capability Matrix&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Understand runtime ports, keys, and request flow&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/runtime-model.html&quot;&gt;Runtime Model&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Configure providers, credentials, quota, and plugins&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/manual/ai-providers.html&quot;&gt;AI Providers&lt;/a&gt;, &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/manual/accounts.html&quot;&gt;Accounts&lt;/a&gt;, &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/manual/plugins.html&quot;&gt;Plugin Management&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Operate Manager Server, backups, upgrades, and migrations&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/operations/manager-server.html&quot;&gt;Manager Server Guide&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Back up data or recover a lost admin key&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/operations/backup.html&quot;&gt;Backup And Restore&lt;/a&gt;, &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/operations/reset-admin-key.html&quot;&gt;Reset Admin Key&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Migrate from the legacy CPA-Manager&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/migration/from-cpa-manager.html&quot;&gt;Migration From CPA-Manager&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Diagnose empty monitoring or queue problems&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/troubleshooting/request-monitoring.html&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Data, Privacy, And Security&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;CPAMP does not phone home, include analytics SDKs, or require account registration.&lt;/li&gt; 
 &lt;li&gt;External calls are limited to the CPA gateway and integrations you explicitly configure or trigger, such as OAuth, provider checks, plugin releases, and model price sync.&lt;/li&gt; 
 &lt;li&gt;Request history, configuration, model prices, inspection history, and automation state stay in local files.&lt;/li&gt; 
 &lt;li&gt;CPA Management Keys are encrypted before SQLite persistence; backups require the SQLite files and &lt;code&gt;data.key&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Normal APIs and JSONL exports expose redacted failure summaries, never raw failure bodies or stored raw JSON.&lt;/li&gt; 
 &lt;li&gt;CPAMP is intended for traffic and credentials you are authorized to operate.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install
npm run dev
npm run type-check
npm run lint
npm run test
npm run build
npm run docs:build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Manager Server:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd apps/manager-server
go test ./...
go test -race ./...
go vet ./...
go run ./cmd/cpa-manager-plus
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Build the Docker stack locally:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose.manager.yml up --build
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Release&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;npm run build&lt;/code&gt; creates a single-file &lt;code&gt;apps/web/dist/index.html&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;bin/release/package-native.sh&lt;/code&gt; embeds the panel into native packages.&lt;/li&gt; 
 &lt;li&gt;Create release notes through &lt;code&gt;release/&amp;lt;version&amp;gt; -&amp;gt; dev -&amp;gt; main&lt;/code&gt;, then push a strict &lt;code&gt;vX.Y.Z&lt;/code&gt; or prerelease tag from the verified &lt;code&gt;main&lt;/code&gt; promotion merge.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;npm run release:validate -- --tag &amp;lt;tag&amp;gt; --content-only&lt;/code&gt; checks the three required release files before a tag is created.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;.github/workflows/release.yml&lt;/code&gt; offers a &lt;code&gt;workflow_dispatch&lt;/code&gt; dry-run from &lt;code&gt;main&lt;/code&gt;; it validates and builds without publishing a GitHub Release, container image, or Telegram message.&lt;/li&gt; 
 &lt;li&gt;Release assets include &lt;code&gt;management.html&lt;/code&gt;, native packages, and Docker images for &lt;code&gt;linux/amd64&lt;/code&gt; and &lt;code&gt;linux/arm64&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Release publishing is serialized and has no automatic commit-log fallback; missing or mismatched notes fail closed. See &lt;a href=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/docs/release.md&quot;&gt;&lt;code&gt;docs/release.md&lt;/code&gt;&lt;/a&gt; for recovery and required repository protections.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Thanks to &lt;a href=&quot;https://github.com/router-for-me/CLIProxyAPI&quot;&gt;CLIProxyAPI&lt;/a&gt; and the official &lt;a href=&quot;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&quot;&gt;CLI Proxy API Management Center&lt;/a&gt; for the runtime and WebUI foundation.&lt;/li&gt; 
 &lt;li&gt;Thanks to the &lt;a href=&quot;https://linux.do/&quot;&gt;Linux.do&lt;/a&gt; community for project promotion and feedback.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/raw/main/LICENSE&quot;&gt;MIT&lt;/a&gt; — Copyright 2026 Seakee.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Gitlawb/zero</title>
      <link>https://github.com/Gitlawb/zero</link>
      <description>&lt;p&gt;The coding agent that answers to you, your model, your machine, your rules.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/assets/zero-logo.png&quot; alt=&quot;Zero&quot; width=&quot;385&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt;&lt;strong&gt;A terminal coding agent you own.&lt;/strong&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/LICENSE&quot;&gt;&lt;img alt=&quot;license&quot; src=&quot;https://img.shields.io/badge/license-MIT-blue&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;Go 1.26.5+&quot; src=&quot;https://img.shields.io/badge/Go-1.26.5+-00ADD8?logo=go&amp;amp;logoColor=white&quot; /&gt; &lt;img alt=&quot;25+ providers&quot; src=&quot;https://img.shields.io/badge/providers-25+-34E2EA&quot; /&gt; &lt;a href=&quot;https://discord.gg/CaQDS6wdFn&quot;&gt;&lt;img alt=&quot;Discord&quot; src=&quot;https://img.shields.io/badge/Discord-join-5865F2?logo=discord&amp;amp;logoColor=white&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/README_ZH.md&quot;&gt;中文&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Zero is an AI coding agent for your local terminal. It can inspect a repository, edit files, run commands, use browser/terminal helpers, and keep durable local sessions while you choose the model and the permission level.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero
zero exec &quot;fix the failing test in ./pkg&quot;
zero exec --output-format stream-json &amp;lt; turns.jsonl
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Why Zero&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Use the model you want.&lt;/strong&gt; Bring OpenAI, Anthropic, Gemini, Groq, OpenRouter, DeepSeek, Mistral, xAI, Qwen, Kimi, GitHub Models, Ollama, LM Studio, or any OpenAI-/Anthropic-compatible endpoint.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Stay in control.&lt;/strong&gt; File writes, shell commands, network access, and out-of-workspace writes go through Zero&#39;s permission and sandbox policy.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Works in the terminal.&lt;/strong&gt; The TUI has model/provider pickers, image input, slash commands, live plan/tool rendering, scrollback, themes, and resume/fork support.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Works without the TUI.&lt;/strong&gt; &lt;code&gt;zero exec&lt;/code&gt; is scriptable, supports text/JSON/ stream-JSON I/O, isolated worktrees, spec-first runs, and meaningful exit codes for CI.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Keeps context local.&lt;/strong&gt; Sessions are stored on disk, searchable, resumable, and never uploaded as telemetry by Zero.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Extensible when you need it.&lt;/strong&gt; Use MCP servers, skills, plugins, hooks, and specialist subagents from the same CLI.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;h3&gt;npm&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g @gitlawb/zero
zero
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The npm package is a small wrapper whose platform build (Linux and macOS on x64/arm64, Windows on x64 — including the browser/terminal control helpers) installs as an optional dependency straight from the npm registry — no install scripts, no downloads outside npm. Bun, pnpm, and yarn work the same way with no trust or approval steps. Installs that skip optional dependencies (&lt;code&gt;--omit=optional&lt;/code&gt;) still work: the wrapper fetches the binary from the matching GitHub Release whenever it is missing. Windows on ARM runs the x64 build under emulation. See &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/NPM_PACKAGING.md&quot;&gt;docs/NPM_PACKAGING.md&lt;/a&gt; for how the package is put together.&lt;/p&gt; 
&lt;h3&gt;Install scripts&lt;/h3&gt; 
&lt;p&gt;Linux/macOS:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://raw.githubusercontent.com/Gitlawb/zero/main/scripts/install.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Windows PowerShell:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm https://raw.githubusercontent.com/Gitlawb/zero/main/scripts/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;From source&lt;/h3&gt; 
&lt;p&gt;Source builds require Go 1.26.5+.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/Gitlawb/zero.git
cd zero
go run ./cmd/zero
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Release installers and the npm wrapper require published GitHub Release assets. If you are testing before the first public release, build from source:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go build -o zero ./cmd/zero
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On Linux, build the sandbox helper too if you want native sandboxing:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go build -o zero-linux-sandbox ./cmd/zero-linux-sandbox
go build -o zero-seccomp ./cmd/zero-seccomp   # optional compatibility wrapper
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Put &lt;code&gt;zero&lt;/code&gt; and &lt;code&gt;zero-linux-sandbox&lt;/code&gt; in the same directory on &lt;code&gt;PATH&lt;/code&gt; (&lt;code&gt;~/.local/bin&lt;/code&gt; is a good default). macOS does not need an extra helper binary. Windows source builds can use the main &lt;code&gt;zero.exe&lt;/code&gt; as their sandbox helper; release archives still ship standalone Windows helper executables.&lt;/p&gt; 
&lt;p&gt;More install details: &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/INSTALL.md&quot;&gt;docs/INSTALL.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;First Run&lt;/h2&gt; 
&lt;p&gt;Start the TUI:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The setup wizard helps you pick a provider and model. You can also configure providers from the command line:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero setup
zero providers list
zero models list
zero doctor
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For API providers, set the matching environment variable before setup or enter the key in the wizard:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=...
export GEMINI_API_KEY=...
export AIMLAPI_API_KEY=...
export LONGCAT_API_KEY=...
export FIREWORKS_API_KEY=...
export MINIMAX_API_KEY=...
export MINIMAXI_API_KEY=...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To configure AI/ML API directly, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero providers setup aimlapi --set-active
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To configure Meituan LongCat (LongCat-2.0) directly, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero providers setup longcat --set-active
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To configure Fireworks AI directly, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero providers setup fireworks --set-active
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;MiniMax presets use the Anthropic-compatible endpoints for the global and China regions:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero providers add minimax --set-active
zero providers add minimaxi-cn --set-active
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To use the OpenAI-compatible endpoints instead, add a custom compatible profile for the required region:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero providers add custom-openai-compatible \
  --name minimax-openai \
  --model MiniMax-M3 \
  --base-url https://api.minimax.io/v1 \
  --api-key-env MINIMAX_API_KEY \
  --set-active

zero providers add custom-openai-compatible \
  --name minimax-cn-openai \
  --model MiniMax-M3 \
  --base-url https://api.minimaxi.com/v1 \
  --api-key-env MINIMAXI_API_KEY \
  --set-active
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For local models, run Ollama or LM Studio and then use &lt;code&gt;zero setup&lt;/code&gt; or &lt;code&gt;zero providers detect&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Daily Use&lt;/h2&gt; 
&lt;h3&gt;Interactive TUI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Useful controls:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Control&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;Enter&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;send the prompt&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;open slash-command suggestions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;Ctrl+X&lt;/code&gt; then letter&lt;/td&gt; 
   &lt;td&gt;common slash commands (e.g. &lt;code&gt;m&lt;/code&gt; → &lt;code&gt;/model&lt;/code&gt;; &lt;code&gt;Ctrl+X&lt;/code&gt; &lt;code&gt;?&lt;/code&gt; for full list)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;Ctrl+P&lt;/code&gt; / &lt;code&gt;Ctrl+N&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;previous / next item in menus (arrows still work)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;Shift+Tab&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;cycle permission mode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;Ctrl+B&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;show/hide the sidebar&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;Ctrl+C&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;cancel, exit, or return from a &lt;code&gt;/btw&lt;/code&gt; conversation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Common slash commands:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/model&lt;/code&gt;, &lt;code&gt;/provider&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;switch the active model/provider&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/spec&lt;/code&gt;, &lt;code&gt;/plan&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;draft and review a plan before building&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/image&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;attach an image for vision-capable models&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/resume&lt;/code&gt;, &lt;code&gt;/rewind&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;continue or roll back local sessions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/new&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;start a fresh session in place (previous session stays on disk)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/btw [question]&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;ask in an isolated fork without adding the side conversation to the main session&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/loop&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;repeat a prompt or custom &lt;code&gt;/command&lt;/code&gt; on an interval (&lt;code&gt;/loop 5m /babysit-prs&lt;/code&gt;) or self-paced&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/compact&lt;/code&gt;, &lt;code&gt;/context&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;manage context usage&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/permissions&lt;/code&gt;, &lt;code&gt;/tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;inspect available tools and policy&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/add-dir&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;allow an extra write directory for this session&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/theme&lt;/code&gt;, &lt;code&gt;/doctor&lt;/code&gt;, &lt;code&gt;/config&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;adjust appearance and inspect setup&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Headless &lt;code&gt;exec&lt;/code&gt;&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero exec &quot;explain internal/agent/loop.go&quot;
zero exec --model claude-sonnet-4.5 &quot;refactor the config loader&quot;
zero exec --use-spec &quot;add rate limiting to the API client&quot;
zero exec --worktree &quot;try the migration in an isolated worktree&quot;
zero exec --resume
zero exec --fork &amp;lt;session-id&amp;gt; &quot;try the other approach&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Programmatic use:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero exec --input-format stream-json --output-format stream-json &amp;lt; turns.jsonl
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The stream-JSON contract is documented in &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/STREAM_JSON_PROTOCOL.md&quot;&gt;docs/STREAM_JSON_PROTOCOL.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Safety Model&lt;/h2&gt; 
&lt;p&gt;Zero is designed to make side effects visible.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Workspace reads are allowed by default.&lt;/li&gt; 
 &lt;li&gt;File writes are limited to the workspace unless you grant another directory.&lt;/li&gt; 
 &lt;li&gt;Shell commands, network access, destructive commands, and elevated actions are permission-gated.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;--add-dir &amp;lt;path&amp;gt;&lt;/code&gt; and &lt;code&gt;/add-dir &amp;lt;path&amp;gt;&lt;/code&gt; grant additional write roots without giving the agent the whole filesystem.&lt;/li&gt; 
 &lt;li&gt;Unsafe/autonomous modes are explicit opt-ins.&lt;/li&gt; 
 &lt;li&gt;Secrets are redacted from tool output and logs where Zero controls the surface.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero --add-dir ../docs-site
zero exec --add-dir ../shared &quot;update both repos&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Sandbox behavior can be inspected with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;zero sandbox policy
zero sandbox grants list
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Web And Local Control&lt;/h2&gt; 
&lt;p&gt;Zero includes local file/search/edit/shell tools, &lt;code&gt;web_fetch&lt;/code&gt; for public URLs, and MCP support for additional tools.&lt;/p&gt; 
&lt;p&gt;For local dev servers, use shell commands such as &lt;code&gt;curl&lt;/code&gt; through &lt;code&gt;exec_command&lt;/code&gt; so the normal sandbox and permission policy applies. Long-running commands stay attached to a background terminal session and can be listed or stopped from the TUI.&lt;/p&gt; 
&lt;p&gt;The npm package also includes browser and terminal helper packages used by local browser/terminal tools. Source builds can use the same helpers when they are on &lt;code&gt;PATH&lt;/code&gt; or configured in Zero&#39;s local-control settings.&lt;/p&gt; 
&lt;h2&gt;Common Commands&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;zero                  interactive TUI
zero exec             one-shot or scripted agent run
zero setup            first-run provider setup
zero auth             OAuth/login helpers for supported providers
zero models           model registry and capabilities
zero providers        provider profiles and detection
zero doctor           setup, key, and connectivity checks
zero context          context-budget report
zero repo-map         deterministic repository map
zero repo-info        local repository summary
zero search | find    search local session history
zero sessions         inspect, resume, fork, and rewind sessions
zero spec             manage spec-mode drafts
zero specialist       manage specialist subagents
zero skills           manage markdown instruction skills
zero plugins          manage plugins
zero hooks            manage lifecycle hooks
zero mcp              manage MCP servers and tools
zero serve --mcp      expose Zero tools over MCP stdio
zero sandbox          inspect sandbox policy and grants
zero worktrees        prepare isolated git worktrees
zero verify           detect and run local verification checks
zero changes          inspect and commit local git changes
zero usage            token usage and estimated cost
zero cron             scheduled agent jobs
zero update --check   check for newer releases
zero upgrade          download, verify, and install the latest release
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Extending Zero&lt;/h2&gt; 
&lt;h3&gt;Project and personal instructions&lt;/h3&gt; 
&lt;p&gt;Zero appends project-specific guidance to the system prompt from the first &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;ZERO.md&lt;/code&gt;, or &lt;code&gt;.zero/AGENTS.md&lt;/code&gt; file found in each directory from the git root down to your current working directory (checked in that order per directory). Files are injected general-to-specific, capped at 8 KiB per file and 32 KiB total.&lt;/p&gt; 
&lt;p&gt;A personal &lt;code&gt;ZERO.md&lt;/code&gt; under &lt;code&gt;config.UserConfigDir()/zero/ZERO.md&lt;/code&gt; (&lt;code&gt;$XDG_CONFIG_HOME/zero/ZERO.md&lt;/code&gt; or &lt;code&gt;~/.config/zero/ZERO.md&lt;/code&gt; on Linux/macOS, &lt;code&gt;%AppData%\Roaming\zero\ZERO.md&lt;/code&gt; on Windows) applies across every workspace, ahead of any project guidelines.&lt;/p&gt; 
&lt;h3&gt;Plugins&lt;/h3&gt; 
&lt;p&gt;Plugins are discovered from &lt;code&gt;~/.config/zero/plugins/&amp;lt;name&amp;gt;/plugin.json&lt;/code&gt; (user scope — &lt;code&gt;$XDG_CONFIG_HOME&lt;/code&gt; or &lt;code&gt;~/.config&lt;/code&gt; on every OS, independent of the &lt;code&gt;config.UserConfigDir()&lt;/code&gt; path used above) and &lt;code&gt;&amp;lt;cwd&amp;gt;/.zero/plugins/&amp;lt;name&amp;gt;/plugin.json&lt;/code&gt; (project scope — resolved from the current working directory, not the repo root), and managed with &lt;code&gt;zero plugins&lt;/code&gt;. A manifest can declare:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;tools&lt;/code&gt; — custom tools (&lt;code&gt;command&lt;/code&gt;, &lt;code&gt;args&lt;/code&gt;, &lt;code&gt;inputSchema&lt;/code&gt;, and a &lt;code&gt;permission&lt;/code&gt; of &lt;code&gt;prompt&lt;/code&gt; or &lt;code&gt;deny&lt;/code&gt;; &lt;code&gt;allow&lt;/code&gt; is honored only when manifest tool auto-approval is enabled)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;hooks&lt;/code&gt; — commands run on &lt;code&gt;beforeTool&lt;/code&gt;, &lt;code&gt;afterTool&lt;/code&gt;, &lt;code&gt;sessionStart&lt;/code&gt;, or &lt;code&gt;sessionEnd&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;prompts&lt;/code&gt; and &lt;code&gt;skills&lt;/code&gt; — additional prompt/skill files&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;MCP servers (&lt;code&gt;zero mcp&lt;/code&gt;) and standalone markdown skills (&lt;code&gt;zero skills&lt;/code&gt;) use the same extension points and can also be wired up outside of a plugin manifest.&lt;/p&gt; 
&lt;h2&gt;Appearance And Accessibility&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Control&lt;/th&gt; 
   &lt;th&gt;Effect&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;NO_COLOR=&amp;lt;anything&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;disables color output&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ZERO_THEME=&amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;selects the startup theme (&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;dark&lt;/code&gt;, &lt;code&gt;light&lt;/code&gt;, or a color theme like &lt;code&gt;dracula&lt;/code&gt;, &lt;code&gt;nord&lt;/code&gt;, &lt;code&gt;gruvbox&lt;/code&gt;, &lt;code&gt;tokyo-night&lt;/code&gt;, &lt;code&gt;catppuccin&lt;/code&gt;, &lt;code&gt;one-dark&lt;/code&gt;, &lt;code&gt;solarized-dark&lt;/code&gt;, &lt;code&gt;rose-pine&lt;/code&gt;, &lt;code&gt;everforest&lt;/code&gt;, &lt;code&gt;neon&lt;/code&gt;, &lt;code&gt;solarized-light&lt;/code&gt;, &lt;code&gt;dune&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;--theme &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;selects the TUI theme from the CLI (same names)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/theme&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;opens the theme picker inside the TUI (live preview; &lt;code&gt;/theme &amp;lt;name&amp;gt;&lt;/code&gt; switches directly)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ZERO_NO_FADE=1&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;disables streaming fade animation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Meaning does not rely on color alone; diffs, permissions, and statuses also use text or glyph markers.&lt;/p&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go test ./...
go run ./cmd/zero-release build
go run ./cmd/zero-release smoke
go run ./cmd/zero-perf-bench
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Experimental: &lt;code&gt;ZERO_OPENAI_TURN_SESSION=1&lt;/code&gt; enables the optimized OpenAI turn session (background connection prewarm + request-prefix telemetry) for headless &lt;code&gt;zero exec&lt;/code&gt; runs against official OpenAI profiles. Off by default; &lt;code&gt;0&lt;/code&gt;/&lt;code&gt;false&lt;/code&gt; disable. A/B-benchmark it by running the same &lt;code&gt;zero-perf-bench&lt;/code&gt; suite with the variable unset and set.&lt;/p&gt; 
&lt;h3&gt;Code Quality and Security Checks&lt;/h3&gt; 
&lt;p&gt;Before committing any changes, ensure all Go code quality and security checks pass. The &lt;code&gt;make&lt;/code&gt; targets below pin each tool to this module&#39;s Go version, so they load correctly even when your default &lt;code&gt;go&lt;/code&gt; toolchain is older — running the plain &lt;code&gt;go run ...@version&lt;/code&gt; form yourself can select the tool module&#39;s own (older) toolchain and fail to load this module instead.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Formatting&lt;/strong&gt;: Run &lt;code&gt;make fmt&lt;/code&gt; (or &lt;code&gt;go fmt ./...&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Vetting&lt;/strong&gt;: Run &lt;code&gt;make vet&lt;/code&gt; (or &lt;code&gt;go vet ./...&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Linting&lt;/strong&gt;: Run &lt;code&gt;make lint-static&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Vulnerability Scan&lt;/strong&gt;: Run &lt;code&gt;make vulncheck&lt;/code&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Use the repository-managed targets rather than globally installed binaries: the targets apply the module&#39;s required Go toolchain as well as the reviewed, pinned tool versions.&lt;/p&gt; 
&lt;p&gt;The installed binaries land in &lt;code&gt;$GOBIN&lt;/code&gt; when it is set, otherwise in &lt;code&gt;$GOPATH/bin&lt;/code&gt; (default &lt;code&gt;~/go/bin&lt;/code&gt;). That directory must be on your &lt;code&gt;PATH&lt;/code&gt; to run them directly. If it isn&#39;t, add it:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gobin=&quot;$(go env GOBIN)&quot;; [ -z &quot;$gobin&quot; ] &amp;amp;&amp;amp; gobin=&quot;$(go env GOPATH)/bin&quot;
case &quot;:$PATH:&quot; in *&quot;:$gobin:&quot;*) ;; *) export PATH=&quot;$PATH:$gobin&quot; ;; esac
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Cross-Compile Examples&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go run ./cmd/zero-release build --goos linux --goarch amd64
go run ./cmd/zero-release build --goos windows --goarch amd64 --output dist/zero.exe
&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/Gitlawb/zero/main/docs/INSTALL.md&quot;&gt;Install&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/UPDATE.md&quot;&gt;Update flow&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/THEMES.md&quot;&gt;Themes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/STREAM_JSON_PROTOCOL.md&quot;&gt;Stream-JSON protocol&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/SPECIALISTS.md&quot;&gt;Specialists&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/GITHUB_ACTION.md&quot;&gt;GitHub Action&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/BENCHMARK.md&quot;&gt;Benchmarks&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/PERFORMANCE.md&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/docs/AGENT_EVALS.md&quot;&gt;Agent evals&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;Real-time chat happens on the &lt;a href=&quot;https://discord.gg/CaQDS6wdFn&quot;&gt;Discord server&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Questions, setup help, ideas, and sharing all live in &lt;a href=&quot;https://github.com/Gitlawb/zero/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Category&lt;/th&gt; 
   &lt;th&gt;Use it for&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/Gitlawb/zero/discussions/categories/q-a&quot;&gt;Q&amp;amp;A&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Setup help, provider/model configuration, &quot;how do I&quot; questions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Gitlawb/zero/discussions/categories/ideas&quot;&gt;Ideas&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Feature proposals and design discussion before any PR&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Gitlawb/zero/discussions/categories/show-and-tell&quot;&gt;Show and tell&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Your skills, plugins, MCP setups, themes, and workflows&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/Gitlawb/zero/discussions/categories/announcements&quot;&gt;Announcements&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Releases and project news from the maintainers&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For a good Q&amp;amp;A answer fast, include &lt;code&gt;zero --version&lt;/code&gt;, your OS and install method, the provider/model in use, and &lt;code&gt;zero doctor&lt;/code&gt; output. See &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/SUPPORT.md&quot;&gt;SUPPORT.md&lt;/a&gt;. Bugs belong in &lt;a href=&quot;https://github.com/Gitlawb/zero/issues/new/choose&quot;&gt;issues&lt;/a&gt;; security reports follow &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;, never a public thread.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome. Read &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;, run the relevant tests, and open a focused pull request.&lt;/p&gt; 
&lt;p&gt;Security reports should follow &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Zero is released under the &lt;a href=&quot;https://raw.githubusercontent.com/Gitlawb/zero/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>vllm-project/semantic-router</title>
      <link>https://github.com/vllm-project/semantic-router</link>
      <description>&lt;p&gt;A programmable Mixture-of-Models router for heterogeneous LLM inference&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/vllm-project/semantic-router/main/website/static/img/artworks/vllm-sr-logo.dark.png&quot; alt=&quot;vLLM Semantic Router&quot; width=&quot;50%&quot; /&gt; 
 &lt;p&gt;&lt;strong&gt;Make Your Mixture-of-Models Programmable.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt; &lt;a href=&quot;https://vllm-sr.ai&quot;&gt;Documentation&lt;/a&gt; | &lt;a href=&quot;https://app.vllm-sr.ai/playground&quot;&gt;Playground&lt;/a&gt; | &lt;a href=&quot;https://vllm-sr.ai/blog/&quot;&gt;Blog&lt;/a&gt; | &lt;a href=&quot;https://vllm-sr.ai/publications/&quot;&gt;Publications&lt;/a&gt; | &lt;a href=&quot;https://huggingface.co/LLM-Semantic-Router&quot;&gt;Hugging Face&lt;/a&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;About&lt;/h2&gt; 
&lt;p&gt;vLLM Semantic Router is a programmable routing layer for building Mixture-of-Models systems across heterogeneous LLM infrastructure. It evaluates request signals, user preferences, and application policies to select—or compose—the right model path for each request.&lt;/p&gt; 
&lt;p&gt;Use it to improve quality, cost, latency, privacy, and safety without hard-coding routing logic into applications.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Dimension&lt;/th&gt; 
   &lt;th&gt;Fragmented today&lt;/th&gt; 
   &lt;th&gt;With vLLM SR&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Models&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Models specialize in different work.&lt;/td&gt; 
   &lt;td&gt;Compose personalized model paths.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Compute&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;GPUs, accelerators, edge, and cloud coexist.&lt;/td&gt; 
   &lt;td&gt;Route across heterogeneous compute.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Inference spans edge, private, and cloud.&lt;/td&gt; 
   &lt;td&gt;Keep data within its boundaries.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Preference&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&quot;Best&quot; changes by user and workload.&lt;/td&gt; 
   &lt;td&gt;Make every preference executable.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;a href=&quot;https://vllm-sr.ai/docs/intro/&quot;&gt;Explore how it works →&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;h3&gt;Install&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://vllm-sr.ai/install.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For platform notes, detailed setup options, and troubleshooting, see the &lt;strong&gt;&lt;a href=&quot;https://vllm-sr.ai/docs/installation/&quot;&gt;Installation Guide&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;Online playground credentials&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Username: &lt;code&gt;love@vllm-sr.ai&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Password: &lt;code&gt;vllm-sr&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Latest News&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;[2026/07/21] New Blog: &lt;a href=&quot;https://vllm.ai/blog/2026-07-21-vllm-sr-new-chapter-mom&quot;&gt;Beyond a Single Model: Building Mixture-of-Models Systems with vLLM Semantic Router&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;[2026/06/29] New Blog: &lt;a href=&quot;https://vllm.ai/blog/2026-06-29-micro-agent-frontier-models&quot;&gt;Micro-Agent: Beat Frontier Models with Collaboration inside Model API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;[2026/06/16] New Blog: &lt;a href=&quot;https://vllm.ai/blog/2026-06-16-vllm-sr-fusion-api&quot;&gt;Beyond One Model: Fusion in vLLM Semantic Router&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;[2026/06/05] v0.3 Released: &lt;a href=&quot;https://vllm.ai/blog/2026-06-05-v0.3-vllm-sr-themis-release&quot;&gt;vLLM Semantic Router v0.3 Themis: From Signals to Stateful Production Routing&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;Earlier announcements&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;[2026/03/24] Vision Paper Released: &lt;a href=&quot;https://vllm-sr.ai/vision-paper&quot;&gt;The Workload-Router-Pool Architecture for LLM Inference Optimization&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2026/03/10] v0.2 Released: &lt;a href=&quot;https://vllm.ai/blog/v0.2-vllm-sr-athena-release&quot;&gt;vLLM Semantic Router v0.2 Athena Release&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2026/02/27] White Paper Released: &lt;a href=&quot;https://vllm-sr.ai/white-paper/&quot;&gt;Signal Driven Decision Routing for Mixture-of-Modality Models&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2026/01/05] Iris v0.1 Released: &lt;a href=&quot;https://blog.vllm.ai/2026/01/05/vllm-sr-iris.html&quot;&gt;vLLM Semantic Router v0.1 Iris: The First Major Release&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/12/16] Collaboration: &lt;a href=&quot;https://blog.vllm.ai/2025/12/16/vllm-sr-amd.html&quot;&gt;AMD × vLLM Semantic Router: Building the System Intelligence Together&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/12/15] New Blog: &lt;a href=&quot;https://blog.vllm.ai/2025/12/14/halugate.html&quot;&gt;Token-Level Truth: Real-Time Hallucination Detection for Production LLMs&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/11/19] New Blog: &lt;a href=&quot;https://blog.vllm.ai/2025/11/19/signal-decision.html&quot;&gt;Signal-Decision Driven Architecture: Reshaping Semantic Routing at Scale&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/11/03] Paper Published: &lt;a href=&quot;https://arxiv.org/abs/2510.26835&quot;&gt;Category-Aware Semantic Caching for Heterogeneous LLM Workloads&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/10/27] New Blog: &lt;a href=&quot;https://blog.vllm.ai/2025/10/27/semantic-router-modular.html&quot;&gt;Scaling Semantic Routing with Extensible LoRA&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/10/12] Paper Accepted: &lt;a href=&quot;https://arxiv.org/abs/2510.08731&quot;&gt;When to Reason: Semantic Router for vLLM&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;[2025/10/08] Collaboration: vLLM Semantic Router with &lt;a href=&quot;https://github.com/vllm-project/production-stack&quot;&gt;vLLM Production Stack&lt;/a&gt; Team.&lt;/li&gt; 
  &lt;li&gt;[2025/09/01] Released the project: &lt;a href=&quot;https://blog.vllm.ai/2025/09/11/semantic-router.html&quot;&gt;vLLM Semantic Router: Next Phase in LLM inference&lt;/a&gt;.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;p&gt;More announcements are available on the &lt;strong&gt;&lt;a href=&quot;https://vllm-sr.ai/blog/&quot;&gt;Blog&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://vllm-sr.ai/publications/&quot;&gt;Publications&lt;/a&gt;&lt;/strong&gt; pages.&lt;/p&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;For questions, feedback, or to contribute, please join the &lt;code&gt;#semantic-router&lt;/code&gt; channel in vLLM Slack.&lt;/p&gt; 
&lt;h3&gt;Community Meetings&lt;/h3&gt; 
&lt;p&gt;We host community meetings on the first and third Tuesday of each month to sync with contributors across different time zones:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;First Tuesday of the month&lt;/strong&gt;: 9:00-10:00 AM EST (accommodates US EST, EU, and Asia Pacific contributors) 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://us05web.zoom.us/j/84122485631?pwd=BB88v03mMNLVHn60YzVk4PihuqBV9d.1&quot;&gt;Zoom Link&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://us05web.zoom.us/meeting/tZAsdeuspj4sGdVraOOR4UaXSstrH2jjPYFq/calendar/google/add?meetingMasterEventId=4jjzUKSLSLiBHtIKZpGc3g&quot;&gt;Google Calendar Invite&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://drive.google.com/file/d/15wO8cg0ZjNxdr8OtGiZyAgkSS8_Wry0J/view?usp=sharing&quot;&gt;ics file&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Third Tuesday of the month&lt;/strong&gt;: 1:00-2:00 PM EST (accommodates US EST and California contributors) 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://us06web.zoom.us/j/86871492845?pwd=LcTtXm9gtGu23JeWqXxbnLLCCvbumB.1&quot;&gt;Zoom Link&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://us05web.zoom.us/meeting/tZIlcOispzkiHtH2dlkWlLym68bEqvuf3MU5/calendar/google/add?meetingMasterEventId=PqWz2vk7TOCszPXqconGAA&quot;&gt;Google Calendar Invite&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://drive.google.com/file/d/1T54mwYpXXoV9QfR76I56BFBPNbykSsTw/view?usp=sharing&quot;&gt;ics file&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Meeting recordings: &lt;a href=&quot;https://www.youtube.com/@vLLMSemanticRouter/videos&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;If you want to contribute, start with &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/vllm-project/semantic-router/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;For repository-native development workflow and validation commands, use &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/vllm-project/semantic-router/main/AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt;&lt;/strong&gt; as the entrypoint and &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/vllm-project/semantic-router/main/tools/agent/docs/README.md&quot;&gt;tools/agent/docs/README.md&lt;/a&gt;&lt;/strong&gt; as the canonical index.&lt;/p&gt; 
&lt;h2&gt;Citation&lt;/h2&gt; 
&lt;p&gt;If you find Semantic Router helpful in your research or projects, please consider citing it:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@misc{semanticrouter2025,
  title={vLLM Semantic Router},
  author={vLLM Semantic Router Team},
  year={2025},
  howpublished={\url{https://github.com/vllm-project/semantic-router}},
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;We are grateful to our sponsors who support us:&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.amd.com&quot;&gt;&lt;strong&gt;AMD&lt;/strong&gt;&lt;/a&gt; provides us with GPU resources and &lt;a href=&quot;https://www.amd.com/en/products/software/rocm.html&quot;&gt;ROCm™&lt;/a&gt; software for training and researching frontier router models, enhancing E2E testing, and building the online models playground.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://www.amd.com&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/vllm-project/semantic-router/main/website/static/img/amd-logo.svg?sanitize=true&quot; alt=&quot;AMD&quot; width=&quot;40%&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;hr /&gt;</description>
      
    </item>
    
  </channel>
</rss>
