Custom bot runner for the Kessel team, built on dev-bot (OpenShift-Fleet/rehor).
Note: The dev-bot submodule was previously hosted at
RedHatInsights/platform-frontend-ai-devand later moved toOpenShift-Fleet/rehor. Both are Red Hat-owned. The canonical upstream isOpenShift-Fleet/rehoras configured in.gitmodules.
This repo contains instance-specific configuration only — the bot code lives in the dev-bot submodule.
├── setup.sh # Instance setup (runs during Docker build)
├── deploy/
│ └── template.yaml # OpenShift deploy template (bot-only)
├── instance/
│ └── kessel/
│ └── agent/
│ ├── mcp.json # MCP server config (Jira)
│ ├── project-repos.json # Repos this instance works on
│ └── personas/
│ ├── backend/ # inventory-api, inventory-consumer
│ ├── sdk-go/ # kessel-sdk-go
│ ├── sdk-py/ # kessel-sdk-py
│ ├── sdk-java/ # kessel-sdk-java
│ ├── sdk-ruby/ # kessel-sdk-ruby
│ ├── sdk-node/ # kessel-sdk-node
│ ├── sdk-browser/ # kessel-sdk-browser
│ ├── docs/ # project-kessel/docs
│ ├── internal-docs/ # project-kessel/internal-docs
│ └── tooling/ # kessel-kafka-connect
└── dev-bot/ # Submodule → OpenShift-Fleet/rehor
The bot picks up tickets that have two kinds of labels:
- Primary label — set via
BOT_LABELindeploy/template.yaml. Marks tickets as eligible for this deployment. repo:<name>— on the Jira ticket. Tells the bot which repo(s) to clone. Must match a key in the instance'sproject-repos.json.
| Jira primary label | Instance config | repo: label |
Upstream repo |
|---|---|---|---|
hcc-ai-kessel |
instance/kessel/agent/ |
repo:inventory-api |
project-kessel/inventory-api |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:inventory-consumer |
project-kessel/inventory-consumer |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-kafka-connect |
project-kessel/kessel-kafka-connect |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-sdk-go |
project-kessel/kessel-sdk-go |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-sdk-py |
project-kessel/kessel-sdk-py |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-sdk-java |
project-kessel/kessel-sdk-java |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-sdk-ruby |
project-kessel/kessel-sdk-ruby |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-sdk-node |
project-kessel/kessel-sdk-node |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-sdk-browser |
project-kessel/kessel-sdk-browser |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:parsec |
project-kessel/parsec |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:kessel-ai-dev |
project-kessel/kessel-ai-dev |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:docs |
project-kessel/docs |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:internal-docs |
project-kessel/internal-docs |
hcc-ai-kessel |
instance/kessel/agent/ |
repo:starlark-unified-schema |
project-kessel/starlark-unified-schema |
To add a repo:
-
Fork it under the bot account and add an entry to the instance's
project-repos.json:"my-repo": { "url": "https://github.com/platex-rehor-bot/my-repo", "upstream": "https://github.com/project-kessel/my-repo.git" }
For a GitLab repository, add
"host": "gitlab"and use the bot group's GitLab fork URL forurl:"my-repo": { "url": "https://gitlab.cee.redhat.com/platex-rehor-bot/my-repo.git", "upstream": "https://gitlab.cee.redhat.com/project-kessel/my-repo.git", "host": "gitlab" }
-
Label the Jira ticket with
repo:my-repo(bare name) orrepo:project-kessel/my-repo(org-prefixed — resolved via the upstream URL). -
Rebuild and redeploy the image so the updated
project-repos.jsonis baked in.
Multiple repo: labels on one ticket are supported for cross-repo work. A ticket without a matching repo: label is skipped.
git submodule update --init --recursive
docker build -f dev-bot/Dockerfile.runner -t kessel-ai-dev:local .cd dev-bot && git pull origin master && cd ..
git add dev-bot
git commit -m "chore: update dev-bot submodule"Built and deployed via Konflux. Pipeline definitions live in .tekton/.
- Push to main → builds and pushes to the production Quay repo
- Pull requests → builds a temporary image to
quay.io/redhat-user-workloads/...(5-day expiry)
Deployed to the shared platform-frontend-ai-dev namespace via app-interface. Uses the shared proxy, memory server, and Vault secrets from the primary instance. See the deploy template for resource configuration.
Default BOT_CONFIG_PATH is instance/kessel. Set this in app-interface if overriding the baked-in config with a remote config repo.
See dev-bot/docs/onboarding-new-instance.md for full onboarding steps.