1.9 KiB
1.9 KiB
Herald
Herald is a Gitea bot that performs automated AI-powered code reviews on pull requests using OpenRouter.
Features
- Listens for Gitea webhook events and triggers code reviews on pull request comments
- Streams reviews back to Gitea as PR comments
- Concurrent review processing with configurable parallelism
- Graceful shutdown — in-progress reviews finish before the process exits
- Error tracking via Sentry
- Tiny memory footprint (~4MB) thanks to Rust
Installation
Requirements: Rust toolchain (rustup.rs)
cargo build --release
./target/release/herald
Herald reads its configuration from environment variables (a .env file is supported):
| Variable | Description |
|---|---|
HTTP_PORT |
Port to listen on |
BOT_NAME |
The bot's Gitea username (used to detect mentions) |
WEBHOOK_SIG_HEADER_SECRET |
Gitea webhook secret for signature verification |
OPEN_ROUTER_API_KEY |
OpenRouter API key |
OPEN_ROUTER_MODEL |
Model to use (e.g. deepseek/deepseek-v4-flash) |
OPEN_ROUTER_TIMEOUT |
OpenRouter request timeout in seconds |
BOT_MAX_CONCURRENT |
Maximum number of concurrent reviews |
GITEA_URL |
Base URL of your Gitea instance |
GITEA_TOKEN |
Gitea API token |
GITEA_TIMEOUT |
Gitea API request timeout in seconds |
SENTRY_DSN |
(optional) Sentry DSN for error tracking |
RUST_LOG |
(optional) Log level, defaults to info |
Development
The easiest way to get started is with the provided Dev Container (VS Code or Zed with the dev container extension).
Open the project and reopen it in the container — the Rust toolchain is pre-installed.
Without Dev Container, you just need a Rust toolchain:
rustup toolchain install stable
cargo run
Copy .env.example to .env and fill in your values before running.