<h1 align="center">
<a href="https://prompts.chat">

Sign in to like and favorite skills
  # [SUPABASE_SERVICE_KEY]eter[SUPABASE_SERVICE_KEY]at <div align="center"> <img src="https://gw.alipayobjects.com/zos/antfincdn/[SUPABASE_SERVICE_KEY]8sN%24GNdh6/language.svg" width="18">[简体中文](./[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]DM[SUPABASE_SERVICE_KEY].md) | [SUPABASE_SERVICE_KEY]nglish | [日本語](./[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]DM[SUPABASE_SERVICE_KEY].ja-J[SUPABASE_SERVICE_KEY].md) **[SUPABASE_SERVICE_KEY]n intelligent Q&[SUPABASE_SERVICE_KEY] bot solution specifically designed for community maintainers and developers.** [](https://www.npmjs.com/package/@petercatai/assistant) [![[SUPABASE_SERVICE_KEY]ersion](https://img.shields.io/npm/v/petercat-lui/latest.svg)](https://www.npmjs.com/package/petercat-lui) [![DockerHub [SUPABASE_SERVICE_KEY]ersion](https://img.shields.io/docker/v/petercatai/petercat?logo=docker&logo[SUPABASE_SERVICE_KEY]olor=white)](https://hub.docker.com/r/petercatai/petercat) [![[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] Test [SUPABASE_SERVICE_KEY]tatus](https://github.com/petercat-ai/petercat/actions/workflows/pr-tests.yml/badge.svg)](https://github.com/petercat-ai/petercat/actions/workflows/pr-tests.yml) [](https://codecov.io/github/petercat-ai/petercat) [](https://github.com/petercat-ai/petercat/blob/master/L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]) </div> ## 🏠 Homepage [🐱Nest: petercat.ai](https://petercat.ai) ## ✨ Features We provide a conversational Q&[SUPABASE_SERVICE_KEY] agent configuration system, self-hosted deployment solutions, and a convenient all-in-one application [SUPABASE_SERVICE_KEY]D[SUPABASE_SERVICE_KEY], allowing you to create intelligent Q&[SUPABASE_SERVICE_KEY] bots for your GitHub repositories with a single click and quickly integrate them into various official websites or projects, providing a more efficient technical support ecosystem for your community. ### [SUPABASE_SERVICE_KEY]hatting means creating [SUPABASE_SERVICE_KEY]ou only need to provide the address or name of your repository, and [SUPABASE_SERVICE_KEY]eter[SUPABASE_SERVICE_KEY]at will automatically complete the entire process of creating a bot.  ### [SUPABASE_SERVICE_KEY]utomated [SUPABASE_SERVICE_KEY]nowledge [SUPABASE_SERVICE_KEY]ase [SUPABASE_SERVICE_KEY]fter the bot is created, all relevant GitHub documentation and issues will be automatically added to the knowledge base as the bot's knowledge source.  ### Multi-[SUPABASE_SERVICE_KEY]latform [SUPABASE_SERVICE_KEY]ntegration [SUPABASE_SERVICE_KEY]arious integration options, such as [SUPABASE_SERVICE_KEY]D[SUPABASE_SERVICE_KEY] integration into official websites or one-click installation of the GitHub [SUPABASE_SERVICE_KEY]pp into GitHub repositories. | | | |:----------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------:| ### More than Q[SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY]obot | project information Query | Discussion [SUPABASE_SERVICE_KEY]eply | ----------------------------------------- | --------------------------------------- | |  |  | | [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY]ummary | [SUPABASE_SERVICE_KEY]ode [SUPABASE_SERVICE_KEY]eview | | ----------------------------------------- | --------------------------------------- | |  | | | [SUPABASE_SERVICE_KEY]ssue [SUPABASE_SERVICE_KEY]earch | [SUPABASE_SERVICE_KEY]ssue [SUPABASE_SERVICE_KEY]ubmit | [SUPABASE_SERVICE_KEY]ssue [SUPABASE_SERVICE_KEY]eply | | ----------------------------------------- | --------------------------------------- | --------------------------------------- | |  |  |  | [Watch full video](https://www.youtube.com/watch?v=83[SUPABASE_SERVICE_KEY]0[SUPABASE_SERVICE_KEY]q2Fskk) ## [SUPABASE_SERVICE_KEY]gent Workflow ![[SUPABASE_SERVICE_KEY]gent workflow](https://mdn.alipayobjects.com/huamei[SUPABASE_SERVICE_KEY]j8gzmo/afts/img/[SUPABASE_SERVICE_KEY]*m24tT[SUPABASE_SERVICE_KEY]ZpW7c[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Dr[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Q/original) ## 📦 [SUPABASE_SERVICE_KEY]elf-Hosted Deployment Deployment solution: [[SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY]](https://aws.amazon.com) + [[SUPABASE_SERVICE_KEY]upabase](https://supabase.com) Here you can find the complete guides: - [[SUPABASE_SERVICE_KEY]elf-Hosting - [SUPABASE_SERVICE_KEY]tart the [SUPABASE_SERVICE_KEY]ervice Locally](./docs/guides/self[SUPABASE_SERVICE_KEY]hosted[SUPABASE_SERVICE_KEY]local.md) - [[SUPABASE_SERVICE_KEY]elf-Hosting - Deploy to [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY]](./docs/guides/self[SUPABASE_SERVICE_KEY]hosted[SUPABASE_SERVICE_KEY]aws.md) ![Deployment [SUPABASE_SERVICE_KEY]olution](https://mdn.alipayobjects.com/huamei[SUPABASE_SERVICE_KEY]j8gzmo/afts/img/[SUPABASE_SERVICE_KEY]*0[SUPABASE_SERVICE_KEY]a[SUPABASE_SERVICE_KEY]TJpyx1[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Dr[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Q/original) [![[SUPABASE_SERVICE_KEY]elf hosted [SUPABASE_SERVICE_KEY]ideo](https://mdn.alipayobjects.com/huamei[SUPABASE_SERVICE_KEY]j8gzmo/afts/img/[SUPABASE_SERVICE_KEY]*spdZ[SUPABASE_SERVICE_KEY]bWs[SUPABASE_SERVICE_KEY]hk[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Dr[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Q/fmt.webp)](https://www.youtube.com/watch?v=[SUPABASE_SERVICE_KEY]l6[SUPABASE_SERVICE_KEY]9[SUPABASE_SERVICE_KEY]e5m[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]) ## ⚙️ [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables The project requires environment variables to be set: ### [SUPABASE_SERVICE_KEY]lient `.env.local` | [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariable | Type | Description | [SUPABASE_SERVICE_KEY]xample | |----------------------------|---------|--------------------------------------------------|---------------------------------------------| | `N[SUPABASE_SERVICE_KEY]XT[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]DOM[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] domain of the backend service | `https://api.petercat.ai` | ### [SUPABASE_SERVICE_KEY]erver `.env` | [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariable | Type | Description | [SUPABASE_SERVICE_KEY]xample | |----------------------------|--------------------------------------------|-----------------------------------------------|---------------------------------------------| | **[SUPABASE_SERVICE_KEY]asic [SUPABASE_SERVICE_KEY]pplication [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables** | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] domain of the backend service | `https://api.petercat.ai` | | `W[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L` | [SUPABASE_SERVICE_KEY]equired | Domain of the frontend web service | `https://petercat.ai` | | `[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]tatic resource domain | `https://static.petercat.ai` | | **[SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY]elated [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables** | | `X[SUPABASE_SERVICE_KEY]G[SUPABASE_SERVICE_KEY]TH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY] secret file name | `prod/githubapp/petercat/pem` | | `[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]` | Optional | The name of the [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY]-managed [SUPABASE_SERVICE_KEY]loudFront private key. [SUPABASE_SERVICE_KEY]f configured, [SUPABASE_SERVICE_KEY]loudFront signed [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Ls will be used to protect your resources. For more information, see the [[SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY] documentation](https://docs.aws.amazon.com/[SUPABASE_SERVICE_KEY]mazon[SUPABASE_SERVICE_KEY]loudFront/latest/DeveloperGuide/private-content-trusted-signers.html). | `prod/petercat/static` | | `LLM[SUPABASE_SERVICE_KEY]TO[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]` | Optional | The name of the LLM signing private key managed by [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY]. [SUPABASE_SERVICE_KEY]f configured, [SUPABASE_SERVICE_KEY]etercat will use the [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] algorithm to manage the user's LLM Token. | `prod/petercat/llm` | | `LLM[SUPABASE_SERVICE_KEY]TO[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]` | Optional | The name of the LLM signing public key managed by [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY]. [SUPABASE_SERVICE_KEY]f configured, [SUPABASE_SERVICE_KEY]etercat will use the [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] algorithm to manage the user's LLM Token. | `prod/petercat/llm/pub` | | `[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]D` | Optional | The [SUPABASE_SERVICE_KEY]ey [SUPABASE_SERVICE_KEY]air [SUPABASE_SERVICE_KEY]D for [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY]loudFront. [SUPABASE_SERVICE_KEY]f configured, [SUPABASE_SERVICE_KEY]loudFront signed [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Ls will be used to protect your resources. For more information, see the [[SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY] documentation](https://docs.aws.amazon.com/[SUPABASE_SERVICE_KEY]mazon[SUPABASE_SERVICE_KEY]loudFront/latest/DeveloperGuide/private-content-trusted-signers.html). | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]xxxxxxxx` | | `[SUPABASE_SERVICE_KEY]3[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]W[SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY]3 bucket for temporary image files | `xxx-temp` | | **[SUPABASE_SERVICE_KEY]upabase [SUPABASE_SERVICE_KEY]elated [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables** | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]upabase service [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L, found [here](https://supabase.com/dashboard/project/[SUPABASE_SERVICE_KEY]/settings/database) | `https://***.supabase.co` | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]upabase service key, found [here](https://supabase.com/dashboard/project/[SUPABASE_SERVICE_KEY]/settings/database) | `[[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]]` | | **[SUPABASE_SERVICE_KEY]uth0 [SUPABASE_SERVICE_KEY]elated [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables** | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]TH0[SUPABASE_SERVICE_KEY]DOM[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]uth0 domain, from [SUPABASE_SERVICE_KEY]uth0 / [SUPABASE_SERVICE_KEY]pplication / [SUPABASE_SERVICE_KEY]asic [SUPABASE_SERVICE_KEY]nformation | `petercat.us.auth0.com` | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]TH0[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]NT[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]D` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]uth0 [SUPABASE_SERVICE_KEY]lient [SUPABASE_SERVICE_KEY]D, from [SUPABASE_SERVICE_KEY]uth0 / [SUPABASE_SERVICE_KEY]pplication / [SUPABASE_SERVICE_KEY]asic [SUPABASE_SERVICE_KEY]nformation | `artfi[SUPABASE_SERVICE_KEY]xxxx` | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]TH0[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]NT[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]uth0 [SUPABASE_SERVICE_KEY]lient [SUPABASE_SERVICE_KEY]ecret, from [SUPABASE_SERVICE_KEY]uth0 / [SUPABASE_SERVICE_KEY]pplication / [SUPABASE_SERVICE_KEY]asic [SUPABASE_SERVICE_KEY]nformation | `xxxx-xxxx-xxx` | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]D[SUPABASE_SERVICE_KEY]NT[SUPABASE_SERVICE_KEY]F[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]` | [SUPABASE_SERVICE_KEY]equired | [SUPABASE_SERVICE_KEY]uth0 [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY]dentifier | `https://petercat.us.auth0.com/api/v2/` | | **LLM [SUPABASE_SERVICE_KEY]elated [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables** | | `O[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]` | [SUPABASE_SERVICE_KEY]equired | Open[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] key | `sk-xxxx` | | `O[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L` | Optional | [SUPABASE_SERVICE_KEY]ase [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L for [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] requests. Only specify if using a proxy or service emulator. | `https://api.openai.com/v1` | `G[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]` | Optional | Gemini [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] key | `xxxx` | | `T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]` | Optional | Tavily [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] key | `tvly-xxxxx` | | **GitHub [SUPABASE_SERVICE_KEY]pp [SUPABASE_SERVICE_KEY]egistration [SUPABASE_SERVICE_KEY]nvironment [SUPABASE_SERVICE_KEY]ariables** | | `X[SUPABASE_SERVICE_KEY]G[SUPABASE_SERVICE_KEY]TH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]D` | Optional | GitHub [SUPABASE_SERVICE_KEY]pp [SUPABASE_SERVICE_KEY]D | `123456` | | `X[SUPABASE_SERVICE_KEY]G[SUPABASE_SERVICE_KEY]TH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]NT[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]D` | Optional | GitHub [SUPABASE_SERVICE_KEY]pp [SUPABASE_SERVICE_KEY]lient [SUPABASE_SERVICE_KEY]D | `[SUPABASE_SERVICE_KEY]v1.xxxxxxx` | | `X[SUPABASE_SERVICE_KEY]G[SUPABASE_SERVICE_KEY]TH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]NT[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T` | Optional | GitHub [SUPABASE_SERVICE_KEY]pp [SUPABASE_SERVICE_KEY]lient [SUPABASE_SERVICE_KEY]ecret | `xxxxxxxx` | | **[SUPABASE_SERVICE_KEY]ate Limiting [SUPABASE_SERVICE_KEY]onfiguration** | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY]D` | Optional | Whether rate limiting is enabled | `True` | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]Q[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]` | Optional | Number of requests for rate limiting | `100` | | `[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L[SUPABASE_SERVICE_KEY]M[SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]D[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]T[SUPABASE_SERVICE_KEY]ON` | Optional | Duration for rate limiting (in minutes) | `1` | | **[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]G server config** | | `WH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]L` | [SUPABASE_SERVICE_KEY]equired | WH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]G [SUPABASE_SERVICE_KEY]erver [SUPABASE_SERVICE_KEY]ath | `http://....` | | `WH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]` | [SUPABASE_SERVICE_KEY]equired | WH[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]G [SUPABASE_SERVICE_KEY]erver [SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] | `sk-xxxx` | ## 🤝 [SUPABASE_SERVICE_KEY]ontributing > [SUPABASE_SERVICE_KEY]eter[SUPABASE_SERVICE_KEY]at uses yarn as the package manager. ```bash git clone https://github.com/petercat-ai/petercat.git # [SUPABASE_SERVICE_KEY]nstall dependencies yarn run bootstrap # Debug client yarn run client # Debug assistant yarn run assistant # Debug server yarn run server # [SUPABASE_SERVICE_KEY]tart website locally yarn run client:server # [SUPABASE_SERVICE_KEY]tart assistant component locally yarn run assistant:server # [SUPABASE_SERVICE_KEY]uild assistant cd assistant yarn run build npm publish # Docker build yarn run build:docker # [SUPABASE_SERVICE_KEY]y[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY] build yarn run build:pypi yarn run publish:pypi ``` ## 💼 [SUPABASE_SERVICE_KEY]nterprise [SUPABASE_SERVICE_KEY]ntegration [SUPABASE_SERVICE_KEY]lease send your project address, usage scenarios, usage frequency, and other information to [[email protected] ]([email protected] ) ## 📧 [SUPABASE_SERVICE_KEY]eporting [SUPABASE_SERVICE_KEY]ssues [SUPABASE_SERVICE_KEY]eter[SUPABASE_SERVICE_KEY]at is still in its growth stage, and occasional “tantrums” are to be expected. [SUPABASE_SERVICE_KEY]lease report issues via the following channels: * [[SUPABASE_SERVICE_KEY]ubmit an [SUPABASE_SERVICE_KEY]ssue(https://github.com/petercat-ai/petercat/issues/new/choose) * [Discussions](https://github.com/petercat-ai/petercat/discussions) 👬 [SUPABASE_SERVICE_KEY]ontributors  ## 💗 [SUPABASE_SERVICE_KEY]ponsor [[SUPABASE_SERVICE_KEY]nt Design](https://ant.design/) ## 📄 License M[SUPABASE_SERVICE_KEY]T@[[SUPABASE_SERVICE_KEY]eter[SUPABASE_SERVICE_KEY]at](https://github.com/petercat-ai/petercat/blob/main/L[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY]N[SUPABASE_SERVICE_KEY][SUPABASE_SERVICE_KEY])
An intelligent Q&A bot solution specifically designed for community maintainers and developers.
We provide a conversational Q&A agent configuration system, self-hosted deployment solutions, and a convenient all-in-one application SDK, allowing you to create intelligent Q&A bots for your GitHub repositories with a single click and quickly integrate them into various official websites or projects, providing a more efficient technical support ecosystem for your community.
You only need to provide the address or name of your repository, and PeterCat will automatically complete the entire process of creating a bot.
After the bot is created, all relevant GitHub documentation and issues will be automatically added to the knowledge base as the bot's knowledge source.
Various integration options, such as SDK integration into official websites or one-click installation of the GitHub App into GitHub repositories.
| project information Query | Discussion Reply |
|---|---|
| PR Summary | Code Review |
|---|---|
| Issue Search | Issue Submit | Issue Reply |
|---|---|---|
Deployment solution: AWS + Supabase
Here you can find the complete guides:
The project requires environment variables to be set:
.env.local
| Environment Variable | Type | Description | Example |
|---|---|---|---|
| Required | API domain of the backend service | |
.env
| Environment Variable | Type | Description | Example |
|---|---|---|---|
| Basic Application Environment Variables | |||
| Required | API domain of the backend service | |
| Required | Domain of the frontend web service | |
| Required | Static resource domain | |
| AWS Related Environment Variables | |||
| Required | AWS secret file name | |
| Optional | The name of the AWS-managed CloudFront private key. If configured, CloudFront signed URLs will be used to protect your resources. For more information, see the AWS documentation. | |
| Optional | The name of the LLM signing private key managed by AWS. If configured, Petercat will use the RSA algorithm to manage the user's LLM Token. | |
| Optional | The name of the LLM signing public key managed by AWS. If configured, Petercat will use the RSA algorithm to manage the user's LLM Token. | |
| Optional | The Key Pair ID for AWS CloudFront. If configured, CloudFront signed URLs will be used to protect your resources. For more information, see the AWS documentation. | |
| Required | AWS S3 bucket for temporary image files | |
| Supabase Related Environment Variables | |||
| Required | Supabase service URL, found here | |
| Required | Supabase service key, found here | |
| Auth0 Related Environment Variables | |||
| Required | Auth0 domain, from Auth0 / Application / Basic Information | |
| Required | Auth0 Client ID, from Auth0 / Application / Basic Information | |
| Required | Auth0 Client Secret, from Auth0 / Application / Basic Information | |
| Required | Auth0 API Identifier | |
| LLM Related Environment Variables | |||
| Required | OpenAI API key | |
| Optional | Base URL for API requests. Only specify if using a proxy or service emulator. | |
| Optional | Gemini API key | |
| Optional | Tavily API key | |
| GitHub App Registration Environment Variables | |||
| Optional | GitHub App ID | |
| Optional | GitHub App Client ID | |
| Optional | GitHub App Client Secret | |
| Rate Limiting Configuration | |||
| Optional | Whether rate limiting is enabled | |
| Optional | Number of requests for rate limiting | |
| Optional | Duration for rate limiting (in minutes) | |
| RAG server config | |||
| Required | WHISKER RAG Server Path | |
| Required | WHISKER RAG Server KEY | |
PeterCat uses yarn as the package manager.
git clone https://github.com/petercat-ai/petercat.git # Install dependencies yarn run bootstrap # Debug client yarn run client # Debug assistant yarn run assistant # Debug server yarn run server # Start website locally yarn run client:server # Start assistant component locally yarn run assistant:server # Build assistant cd assistant yarn run build npm publish # Docker build yarn run build:docker # PyPI build yarn run build:pypi yarn run publish:pypi
Please send your project address, usage scenarios, usage frequency, and other information to [email protected]
PeterCat is still in its growth stage, and occasional “tantrums” are to be expected. Please report issues via the following channels:
👬 Contributors
MIT@PeterCat