{"id":50282476,"url":"https://github.com/aionops/kuilei","last_synced_at":"2026-05-28T01:00:46.733Z","repository":{"id":157897491,"uuid":"573810210","full_name":"aionops/kuilei","owner":"aionops","description":"🤖 A Probot App inspired by Kubernetes Prow. Chatops, automatic PR merging and more.","archived":false,"fork":false,"pushed_at":"2024-04-08T08:20:10.000Z","size":270,"stargazers_count":6,"open_issues_count":9,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T22:56:43.418Z","etag":null,"topics":["automation","bot","chatbot","chatops","cicd","gitops","gitops-toolkit","golang","kubernetes","probot","probot-app","prow"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aionops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-03T14:02:20.000Z","updated_at":"2023-09-07T00:14:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"b902a190-132a-4736-b9a6-100a851c0620","html_url":"https://github.com/aionops/kuilei","commit_stats":{"total_commits":91,"total_committers":2,"mean_commits":45.5,"dds":0.3516483516483516,"last_synced_commit":"e3a3216aa53193a4f85c26ac40217cade39f4bc1"},"previous_names":["aionops/kuilei"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/aionops/kuilei","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aionops%2Fkuilei","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aionops%2Fkuilei/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aionops%2Fkuilei/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aionops%2Fkuilei/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aionops","download_url":"https://codeload.github.com/aionops/kuilei/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aionops%2Fkuilei/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33589684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","bot","chatbot","chatops","cicd","gitops","gitops-toolkit","golang","kubernetes","probot","probot-app","prow"],"created_at":"2026-05-28T01:00:18.460Z","updated_at":"2026-05-28T01:00:46.724Z","avatar_url":"https://github.com/aionops.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eKuilei\u003c/h1\u003e\n\nThis project is inspired by [Prow](https://github.com/kubernetes/test-infra/tree/master/prow), and implements chat-ops, automatic PR merging in a form of [Probot](https://github.com/probot/probot) Github App\n\u003e Prow is a Kubernetes based CI/CD system. Jobs can be triggered by various types of events and report their status to many different services. In addition to job execution, Prow provides GitHub automation in the form of policy enforcement, chat-ops via /foo style commands, and automatic PR merging.\n\n- [About](#about)\n- [Features](#features)\n  - [Chat-Ops](#chat-ops)\n  - [CI/CD Pipeline](#cicd-pipeline)\n  - [Automatic Pull Requests Merging](#automatic-pull-requests-merging)\n  - [Automatic notification](#automatic-notification)\n  - [Mulitple Git Server Backend](#mulitple-git-server-backend)\n- [Quick start](#quick-start)\n  - [Create GitHub App](#create-github-app)\n  - [Using docker to start hook server](#using-docker-to-start-hook-server)\n- [Build From Source](#build-from-source)\n- [Contributing](#contributing)\n- [License](#license)\n\n## About\n\u003e Kuilei(傀儡) is a kind of wooden puppet in ancient China, usually controlled from above using wires or strings depending on regional variations, and is often used in puppetry. \n\u003e \n\u003e There are also some masters who are proficient in mechanics who can make puppets that can move automatically, similar to robots today. The two most famous of them are [Mo Zi](https://en.wikipedia.org/wiki/Mozi) and [Lu Ban](https://en.wikipedia.org/wiki/Lu_Ban), who lived in the early portion of the Warring States period in Chinese history.\n\n## Features\n\n### Chat-Ops\nSlash commands (commands with `/` as prefix):\n- **Labels**\n  - [x] `/lgtm [cancel]`: Add/Remove `lgtm` label to a pull request or issue.\n  - [x] `/approve [cancel]`: Add/Remove `approved` label to a pull request or issue.\n  - [x] `/[remove-]label xxx`: Add/Remove arbitrary label to a pull request or issue.\n  - [ ] `/hold [cancel]`: Add/Remove `do-not-merge/hold` label to a pull request or issue.\n- **Issue/PR management**\n  - [ ] `/assign` Assign\n  - [ ] `/close` Close\n  - [ ] `/milestone`\n\nNatural language parsing:\n\u003e *TODO*\n\n### CI/CD Pipeline\nSupported pipeline configuration:\n- [ ] GitHub style pipeline configuration\n\nSupported pipeline backend:\n- [ ] Tekton pipeline\n- [ ] Kubeflow pipeline (MLOps specific)\n- [ ] Argo workflow\n- [ ] Raw kubernetes\n- [ ] Raw docker\n\n### Automatic Pull Requests Merging\nJust like `tide` in prow:\n- [x] Merge pull requests with required labels\n  - e.g. merge pull requests with labels `lgtm` and `approved`\n- [x] Keep pull requests with certain labels from merging\n  - e.g. hold pull requests with label `do-not-merge/hold`\n- [ ] Reset mandatory CI job before merging\n- [ ] Using merge-pool to manage multiple pull requests\n\n### Automatic notification\n\n- [ ] E-mail notification\n- [ ] Slack notification\n- [ ] WeCom notification\n- [ ] DingTalk notification\n- [ ] WeChat notification\n\n### Mulitple Git Server Backend\n\n- [x] GitHub\n- [ ] GitLab\n- [ ] Raw SSH Git Server\n- [ ] Gerrit\n\n## Quick start\n### Create GitHub App\nFollow the [official document](https://docs.github.com/en/apps/creating-github-apps/creating-github-apps/creating-a-github-app) to create your GitHub App.\n\nThen go to the App settings page\n- Get the `App ID`\n- Set in the `webhook secret` blank and save it in local file `.env/web_secret`\n- Generate a `priviate key`  and save it in local file `.env/private.pem`\n- Set the `Webhook URL` to `http://\u003cIP\u003e:7771/hook`\n### Using docker to start hook server\n\n```sh\n# Set App ID\nAPP_ID=\n# Pull latest docker image\ndocker run -d --name kuilei --restart=always \\\n  -v `pwd`/.env:/etc/kuilei \\\n  -p 7771:7771 airconduct/kuilei hook \\\n  --github.appid ${APP_ID} \\\n  --github.hmac-token-file /etc/kuilei/web_secret \\\n  --github.private-key-file /etc/kuilei/private.pem \\\n  --address=\"0.0.0.0\"\n```\n\n\n## Build From Source\n```sh\n# Build docker image\ndocker build -t kuilei .\n```\n\n## Contributing\n\nIf you have suggestions for how kuilei could be improved, or want to report a bug, open an issue! We'd love all and any contributions.\n\nFor more, check out the [Contributing Guide](CONTRIBUTING.md).\n\n## License\n\n[Apache](LICENSE) © 2022 Airconduct\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faionops%2Fkuilei","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faionops%2Fkuilei","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faionops%2Fkuilei/lists"}