Files
2026-06-10 20:01:21 +00:00

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.