This guide walks you through registering a GitHub App and running coven-github on your own infrastructure.
- Rust toolchain (
rustup) coven-codebinary installed and in PATH (or setcoven_code_binin config)- A public HTTPS endpoint for the webhook receiver (ngrok works for local dev)
- Go to GitHub → Settings → Developer settings → GitHub Apps → New GitHub App
- Set:
- App name:
coven-cody(or your org's name) - Homepage URL:
https://opencoven.ai - Webhook URL:
https://your-host/webhook - Webhook secret: generate a random string (save it for config)
- App name:
- Permissions:
- Repository → Contents: Read & Write
- Repository → Issues: Read & Write
- Repository → Pull requests: Read & Write
- Repository → Checks: Write
- Repository → Metadata: Read
- Subscribe to events:
- Issues
- Issue comment
- Pull request review comment
- Check suite / Check run
- Click Create GitHub App
- Generate and download a private key (PEM file)
- Note your App ID
From your GitHub App's page, click Install App and select the target repository.
git clone https://github.com/OpenCoven/coven-github
cd coven-github
cargo build --releasecp config/example.toml config/local.tomlEdit config/local.toml:
- Set
github.app_idto your App ID - Set
github.private_key_pathto the downloaded PEM - Set
github.webhook_secretto the secret from step 1 - Set
worker.coven_code_binto yourcoven-codebinary path - Configure
[[familiars]]with your bot username and model
./target/release/coven-github serve --config config/local.tomlThe server starts on the configured bind address. Point your GitHub App webhook at https://your-host/webhook.
On a repo where the App is installed:
- Create an issue
- Assign it to your bot user (
@coven-cody) - Watch the Check Run appear and the familiar start working
ngrok http 3000
# Copy the https URL → set as webhook URL in GitHub App settingsFROM rust:1.82 AS builder
WORKDIR /app
COPY . .
RUN cargo build --release
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates git && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/coven-github /usr/local/bin/
COPY config/example.toml /config/local.toml
CMD ["coven-github", "serve", "--config", "/config/local.toml"]- The webhook secret is critical — validate it on every request (coven-github does this automatically)
- Installation tokens expire every hour — coven-github refreshes them automatically
- Never commit your private key PEM to the repository
- Run workers in isolated containers per task in production (see
docs/container-isolation.md)