{"id":18266287,"url":"https://github.com/ssube/isolex","last_synced_at":"2025-04-04T21:32:34.752Z","repository":{"id":32004955,"uuid":"130492932","full_name":"ssube/isolex","owner":"ssube","description":"Chat bot able to speak natural language and markup, prompt to complete commands, and offer localized help. Configured with schema-validated YAML, features JWT authentication with granular RBAC, and SQL persistence.","archived":false,"fork":false,"pushed_at":"2024-05-26T04:05:13.000Z","size":7671,"stargazers_count":17,"open_issues_count":16,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-05-27T23:20:17.100Z","etag":null,"topics":["aws-lex","bot","chatbot","chatops","discord-bot","github-bot","gitlab-bot","kubernetes","slack-bot","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ssube.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-21T16:41:47.000Z","updated_at":"2024-06-18T04:17:40.445Z","dependencies_parsed_at":"2024-06-18T04:17:06.723Z","dependency_job_id":"65597861-4653-4c04-b99a-192d809c30b6","html_url":"https://github.com/ssube/isolex","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssube%2Fisolex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssube%2Fisolex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssube%2Fisolex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssube%2Fisolex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssube","download_url":"https://codeload.github.com/ssube/isolex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247252526,"owners_count":20908707,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws-lex","bot","chatbot","chatops","discord-bot","github-bot","gitlab-bot","kubernetes","slack-bot","typescript"],"created_at":"2024-11-05T11:22:45.349Z","updated_at":"2025-04-04T21:32:33.739Z","avatar_url":"https://github.com/ssube.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# isolex\n\nChat bot able to speak natural language and markup, prompt to complete commands, and offer localized help.\nConfigured with schema-validated YAML, features JWT authentication with granular RBAC, and SQL persistence.\nListeners for common chat services, controllers for chat functions and devops tools, and inspired by the Kubernetes API.\n\n## Getting Started\n\nThe bot interacts through Discord and Slack, Github and Gitlab comments and webhooks, and a GraphQL API.\n\nThe [getting started guide](./docs/getting-started.md) has more information on using the bot.\n\n## Contents\n\n- [isolex](#isolex)\n  - [Getting Started](#getting-started)\n  - [Contents](#contents)\n  - [Status](#status)\n  - [Releases](#releases)\n  - [Build](#build)\n  - [Config](#config)\n  - [Run](#run)\n    - [Deploy to Kubernetes](#deploy-to-kubernetes)\n    - [Local in Docker](#local-in-docker)\n    - [Local from Bundle](#local-from-bundle)\n  - [License](#license)\n\n## Status\n\n[![Pipeline status](https://img.shields.io/gitlab/pipeline/ssube/isolex.svg?gitlab_url=https%3A%2F%2Fgit.apextoaster.com\u0026logo=gitlab)](https://git.apextoaster.com/ssube/isolex/commits/master)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=ssube_isolex\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=ssube_isolex)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/5d4326d6f68a2fa137cd/test_coverage)](https://codeclimate.com/github/ssube/isolex/test_coverage)\n[![MIT license](https://img.shields.io/github/license/ssube/isolex.svg)](https://github.com/ssube/isolex/blob/master/LICENSE.md)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fssube%2Fisolex.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fssube%2Fisolex?ref=badge_shield)\n\n[![Open bug count](https://img.shields.io/github/issues-raw/ssube/isolex/type-bug?color=red\u0026label=open+bugs)](https://github.com/ssube/isolex/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fbug)\n[![Open issue count](https://img.shields.io/github/issues-raw/ssube/isolex.svg)](https://github.com/ssube/isolex/issues?q=is%3Aopen+is%3Aissue)\n[![Closed issue count](https://img.shields.io/github/issues-closed-raw/ssube/isolex?color=brightgreen)](https://github.com/ssube/isolex/issues?q=is%3Aissue+is%3Aclosed)\n\n[![Renovate badge](https://badges.renovateapi.com/github/ssube/isolex)](https://renovatebot.com)\n[![Dependency status](https://img.shields.io/david/ssube/isolex.svg)](https://david-dm.org/ssube/isolex)\n[![Dev dependency status](https://img.shields.io/david/dev/ssube/isolex.svg)](https://david-dm.org/ssube/isolex?type=dev)\n[![Known vulnerabilities](https://snyk.io/test/github/ssube/isolex/badge.svg)](https://snyk.io/test/github/ssube/isolex)\n\n[![Maintainability score](https://api.codeclimate.com/v1/badges/5d4326d6f68a2fa137cd/maintainability)](https://codeclimate.com/github/ssube/isolex/maintainability)\n[![Technical debt ratio](https://img.shields.io/codeclimate/tech-debt/ssube/isolex.svg)](https://codeclimate.com/github/ssube/isolex/trends/technical_debt)\n[![Quality issues](https://img.shields.io/codeclimate/issues/ssube/isolex.svg)](https://codeclimate.com/github/ssube/isolex/issues)\n[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ssube/isolex.svg?logo=lgtm)](https://lgtm.com/projects/g/ssube/isolex/context:javascript)\n[![Total alerts](https://img.shields.io/lgtm/alerts/g/ssube/isolex.svg)](https://lgtm.com/projects/g/ssube/isolex/alerts/)\n\n## Releases\n\n[![github release link](https://img.shields.io/badge/github-release-blue?logo=github)](https://github.com/ssube/isolex/releases)\n[![github release version](https://img.shields.io/github/tag/ssube/isolex.svg)](https://github.com/ssube/isolex/releases)\n[![github commits since release](https://img.shields.io/github/commits-since/ssube/isolex/v0.10.0.svg)](https://github.com/ssube/isolex/compare/v0.10.0...master)\n\n[![npm package link](https://img.shields.io/badge/npm-package-blue?logo=npm)](https://www.npmjs.com/package/isolex)\n[![npm release version](https://img.shields.io/npm/v/isolex.svg)](https://www.npmjs.com/package/isolex)\n[![Typescript definitions](https://img.shields.io/npm/types/isolex.svg)](https://www.npmjs.com/package/isolex)\n\n[![docker image link](https://img.shields.io/badge/docker-image-blue?logo=docker)](https://hub.docker.com/r/ssube/isolex)\n[![docker image size](https://images.microbadger.com/badges/image/ssube/isolex:master.svg)](https://microbadger.com/images/ssube/isolex:master)\n\n## Build\n\nTo build and run the bot locally, you will need `make`, `node`, and `yarn` installed globally or a container with the\nsame.\n\nClone this repository:\n\n```shell\n\u003e git clone git@github.com:ssube/isolex.git\n\u003e cd isolex\n```\n\nWithin the project directory, make the bundle:\n\n```shell\n\u003e make local\n\nyarn install\n[1/4] Resolving packages...\n...\nDone in 0.65s\n\nℹ ｢atl｣: Using typescript@3.2.2 from typescript\n\n...\nstarting bot...\n```\n\n## Config\n\nAn [example config file](./docs/isolex.yml) is provided in [the `docs/` directory](./docs). This enables most of the\ncore features, but requires [some secrets](./docs/getting-started.md#secrets) to be defined in the environment.\n\n## Run\n\n### Deploy to Kubernetes\n\nTo deploy the bot into a Kubernetes cluster:\n\n```shell\n\u003e kubectl create namespace isolex\n\u003e kubectl apply -n isolex -f deploy/deploy.yml\n\u003e kubectl apply -n isolex -f deploy/service.yml\n\u003e kubectl create secret generic isolex-config --dry-run --from-file docs/isolex.yml -o json | kubectl apply -n isolex -f -\n```\n\n### Local in Docker\n\nTo run the bot locally from the Docker image:\n\n```shell\n\u003e docker run ssube/isolex:master\n```\n\n### Local from Bundle\n\nTo run the bot locally from [the build bundle](#build):\n\n```shell\n\u003e source docs/isolex.env\n\u003e make run-bunyan\n```\n\nLogs will be piped through [bunyan](https://github.com/trentm/node-bunyan) and pretty-printed.\n\n## License\n\nApprove this.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssube%2Fisolex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssube%2Fisolex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssube%2Fisolex/lists"}