selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Broccoli OSS logo

Self-host Broccoli OSS

v0.2.0

AI teammates that turn Linear tickets into pull requests

BetaOpen SourceMIT
Updated6 months ago
LanguagePython
Setup difficultyAdvanced
Stars
283
Port
8080 (HTTP ingress service for GitHub and Linear webhooks)
Requires
Anthropic API, GitHub App, Google Cloud Secret Manager, Linear, OpenAI API, PostgreSQL
Install with Docker

What is Broccoli OSS?

Broccoli OSS is an AI automation platform for engineering teams that transforms Linear tickets into merged pull requests. It operates as two serverless components on Google Cloud — an ingress handler for GitHub and Linear webhooks, and a runner that drives the Codex and Claude command-line tools against built-in prompt templates. The platform runs in your own Google Cloud project using Cloud SQL for PostgreSQL to persist state and Secret Manager to protect secrets, keeping all data within your environment. Core capabilities include converting Linear issues into reviewable PRs, AI-powered code review on every pull request with inline comments and automated fix commits, handling GitHub review feedback, deduplicating webhook deliveries, and a production-ready serverless deployment. Setup takes roughly 30 minutes using a bootstrap script and requires a GitHub App, a dedicated Linear bot user, plus API keys from OpenAI and Anthropic. The codebase is MIT-licensed and under active development.

Should you self-host Broccoli OSS?

Broccoli OSS scores 47/100 on selfhost.directory (how scoring works) and ranks #5 of 10 in AI Automation. It has 283 GitHub stars.

It shipped 2 stable releases in the past year. The latest, v0.2.0, came out on 26 April 2026.

Setup is advanced: plan for several services and some ongoing maintenance. It is MIT-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is aci-dev (62/100, 4 925 stars). It scores higher overall, so compare the two before you pick. See Broccoli OSS vs aci-dev side by side.

Features

  • AI code review on pull requests
  • Blaxel sandbox execution backendOptional alternative to default Cloud Run Jobs backend
  • Customizable prompt templates
  • GitHub PR code review
  • GitHub review feedback automation
  • Production-grade deployment
  • Self-hosted on Google Cloud
  • Webhook deduplication

Broccoli OSS README

How to install Broccoli OSS

Install Broccoli OSS with Docker

Docker with buildx
Environment variables
BUILD_BACKEND=docker, GCP_PROJECT_ID, GCP_REGION, TAG, PLATFORM, PUSH

export BUILD_BACKEND=docker ./deploy/build-and-push.sh

Alternative local Docker build using buildx instead of Cloud Build

How to configure Broccoli OSS

  • ANTHROPIC_API_KEYreplace-meAnthropic API key for Claude

    Anthropic API key for Claude

  • ANTHROPIC_API_KEY_SECRETSecret Manager selector for Anthropic API key (Blaxel mode)

    Secret Manager selector for Anthropic API key (Blaxel mode)

  • APP_BASE_URLhttp://127.0.0.1:8080Base URL of the deployed service

    Base URL of the deployed service

  • BL_API_KEYBlaxel API key (optional)

    Blaxel API key (optional)

  • BL_REGIONBlaxel region (optional)

    Blaxel region (optional)

  • BL_WORKSPACEBlaxel workspace ID (optional)

    Blaxel workspace ID (optional)

  • BROCCOLI_BLAXEL_REGIONBlaxel region (optional)

    Blaxel region (optional)

  • BROCCOLI_BLAXEL_SANDBOX_IMAGEBlaxel sandbox runner image (optional)

    Blaxel sandbox runner image (optional)

  • BROCCOLI_BLAXEL_SANDBOX_MEMORY_MB4096Blaxel sandbox memory in MB (optional)

    Blaxel sandbox memory in MB (optional)

  • BROCCOLI_BLAXEL_SANDBOX_TTL6hBlaxel sandbox TTL (optional)

    Blaxel sandbox TTL (optional)

  • CODEX_MODELgpt-5.4Codex model to use

    Codex model to use

  • CODEX_REASONING_EFFORThighCodex reasoning effort level

    Codex reasoning effort level

  • DATABASE_URLpostgresql://postgres:postgres@127.0.0.1:5432/broccoli_ossPostgreSQL connection string

    PostgreSQL connection string

  • EXECUTION_BACKENDcloud_run_jobsExecution backend: cloud_run_jobs or blaxel

    Execution backend: cloud_run_jobs or blaxel

    values: cloud_run_jobs, blaxel

  • GCP_PROJECT_IDexample-projectGoogle Cloud project ID

    Google Cloud project ID

  • GCP_REGIONus-central1Google Cloud region

    Google Cloud region

  • GH_WEBHOOK_SECRETreplace-meShared secret for GitHub webhook signature verification

    Shared secret for GitHub webhook signature verification

  • GITHUB_APP_ID123456Numeric GitHub App identifier

    Numeric GitHub App identifier

  • GITHUB_APP_PRIVATE_KEY_PEMGitHub App private key in PEM format

    GitHub App private key in PEM format

  • LINEAR_API_KEYlin_api_replace_meLinear API key for the bot user

    Linear API key for the bot user

  • LINEAR_WEBHOOK_SECRETreplace-meShared secret for Linear webhook signature verification

    Shared secret for Linear webhook signature verification

  • LOG_LEVELINFOLogging level

    Logging level

  • OPENAI_API_KEYreplace-meOpenAI API key for Codex

    OpenAI API key for Codex

  • OPENAI_API_KEY_SECRETSecret Manager selector for OpenAI API key (Blaxel mode)

    Secret Manager selector for OpenAI API key (Blaxel mode)

  • RUNNER_JOB_NAMEprojects/example-project/locations/us-central1/jobs/broccoli-oss-runnerCloud Run Job resource name for the runner

    Cloud Run Job resource name for the runner

  • RUNNER_SERVICE_ACCOUNTbroccoli-oss-runner@example-project.iam.gserviceaccount.comService account for the runner job

    Service account for the runner job

  • RUNNER_TIMEOUT_SECONDS3600Runner job timeout in seconds

    Runner job timeout in seconds

Broccoli OSS releases & version history

FAQ

Is there a hosted version?

Not today. Broccoli runs in your own GCP project against your own keys.

Can I swap out the LLMs?

The runner shells out to the codex and claude CLIs; swapping requires forking the runner handlers and vendored prompt templates.

Can I use an externally managed Postgres?

Yes, set DB_BACKEND to anything other than cloudsql and point DATABASE_URL at your instance.

More in CI/CD

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…