Skip to main content

Bubo — agentic AI code review for GitLab MRs and GitHub PRs, with the LLM of your choice.

Project description

Bubo 🦉

PyPI Python 3.14+ Docker: GHCR CI OpenSSF Scorecard Signed with cosign SLSA 3 Ruff Managed with uv Docs License: MIT

Agentic AI code review with the LLM of your choice. Bubo reviews your GitLab MRs and GitHub PRs with the model you run, and posts only the findings worth acting on as inline threads — no chatbot noise, no praise, no summaries.

  • 🔒 Self-hosted — code, diffs, and review data stay on your infrastructure
  • 🧠 Bring-your-own-LLM — Codex, Claude, or any model your CLI drives
  • 🔀 GitLab & GitHub — one config, identical behavior on both
  • 🎯 Inline findings only — with one "all good" ack on a clean change
  • 🛡️ Governance, provenance & an auditable on-prem report
  • 📊 OpenTelemetry metrics — cosign-signed releases with SBOMs

📖 Full documentation → mountainowl.github.io/bubo

Install

uv tool install bubo     # or: pipx install bubo
bubo init                # idempotent; seeds config + workspace + DB
bubo doctor              # verify before the first poll
bubo-poller              # one poll cycle — dry-run by default, posts nothing

Prefer a container? docker pull ghcr.io/mountainowl/bubo (multi-arch; the review-agent CLI is BYO). Full walkthrough in Install and configure.

Documentation

Everything lives on the docs site — this README is just the front door.

Recipes Copy-paste GitLab / GitHub / in-house-model setups.
Features The full capability list.
Configuration Every setting, per section, plus a quick-start config.
Operate Deploy, schedule, grade outcomes, governance report.
Troubleshooting Host / infra fixes (sandbox, AppArmor).
Metrics & telemetry Emitted llm_review.* metrics and dashboards.

Status

  • GitLab & GitHub posting via polling — production path, at outcome-metric parity. Set [scm].provider = "github" (or BUBO_PROVIDER=github).
  • MCP server (bubo-mcp) — read-only metrics + triggered reviews; stdio or HTTP.
  • Codex or Claude — Bubo runs the review through a wrapper around your agent CLI; Codex ships pre-wired.
  • Webhook-driven triggering — not yet; polling is the only path.

Review execution sits outside CI/CD by design — run it as a poller beside your existing pipelines.

Security

  • config/env.toml is gitignored and holds tokens. Do not print or commit real values.
  • Review-agent stdout is redacted (GITLAB_TOKEN=, OPENAI_API_KEY=, glpat-…, sk-…, credentialed Git URLs) before it touches reports, logs, or the database.
  • The reviewer subprocess runs under a strict env allowlist — host secrets aren't handed wholesale to the LLM agent.
  • Releases are cosign-signed via Sigstore keyless OIDC, with an SBOM on every release.
  • Report vulnerabilities per SECURITY.md.

Community

Contributing · Security policy · Support · Code of conduct · License: MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bubo-0.25.1.tar.gz (411.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bubo-0.25.1-py3-none-any.whl (215.3 kB view details)

Uploaded Python 3

File details

Details for the file bubo-0.25.1.tar.gz.

File metadata

  • Download URL: bubo-0.25.1.tar.gz
  • Upload date:
  • Size: 411.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for bubo-0.25.1.tar.gz
Algorithm Hash digest
SHA256 5aea2cdd7cdfcfa3089a74b290d1d1025afe963367c04e3f0e8bfdcf2321390c
MD5 e1f5836f585ed827a35123e4a409497e
BLAKE2b-256 571bcced6bdbb9133955055fd6ce198bb9f61cefd3584fa9e1b8bf86b3329286

See more details on using hashes here.

Provenance

The following attestation bundles were made for bubo-0.25.1.tar.gz:

Publisher: publish-pypi.yml on mountainowl/bubo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bubo-0.25.1-py3-none-any.whl.

File metadata

  • Download URL: bubo-0.25.1-py3-none-any.whl
  • Upload date:
  • Size: 215.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for bubo-0.25.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f771aeef58cc82c0908a7a4ae6aba4739fb2214cdb7a89d4818c5947fccc5e52
MD5 d28244bcfba9461dd622fac590c81174
BLAKE2b-256 15f6298a97c7dad23c5dfa04710f08e204766d6b22ed7befd676ea8f3957ea4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for bubo-0.25.1-py3-none-any.whl:

Publisher: publish-pypi.yml on mountainowl/bubo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page