클라우드 기반 원샷 코딩 에이전트 Broccoli 오픈소스 공개
Linear 티켓을 할당하면 Claude와 Codex 기반의 AI가 밤사이 코드를 작성해 PR(Pull Request)까지 생성해 주는 오픈소스 코딩 에이전트 'Broccoli'가 공개되었습니다. 이 도구는 개발자의 구글 클라우드(GCP) 환경에 배포되어 데이터가 외부로 유출되지 않는 보안성을 갖추고 있으며, 약 30분이면 배포를 완료할 수 있는 실무형 솔루션을 제공합니다.
🥦 Broccoli: 당신의 개발 워크플로우를 위한 오픈소스 AI 팀원
Broccoli는 Linear 티켓을 배포 가능한 PR(Pull Request)로 변환해 줍니다. Claude와 Codex 기반으로 작동하며, 사용자의 자체 구글 클라우드(Google Cloud) 환경에서 실행됩니다.
왜 Broccoli인가?
🎯 Linear 티켓 → 리뷰 가능한 PR. Broccoli 봇에게 이슈를 할당하기만 하면, 여러분이 자는 동안 에이전트가 계획을 세우고 코드를 구현한 뒤 PR을 열어둡니다.
🔒 당신의 인프라, 당신의 키, 당신의 데이터. 자체 GCP 프로젝트와 Postgres 데이터베이스에 배포됩니다. 서드파티 제어 평면(Control Plane)이 없으며, 데이터가 고객의 테넌시(Tenancy)를 벗어나지 않습니다.
🧱 첫날부터 프로덕션급. 서버리스 Cloud Run, Secret Manager, 웹훅 중복 제거(Dedupe), 그리고 내구성 있는 작업 상태(Durable Job State)를 제공하는 장난감이 아닌 실무형 도구입니다.
🧩 프롬프트 직접 제어. 저희가 제공하는 프롬프트 템플릿으로 시작하세요. 코드와 함께 포크(Fork)하고, 튜닝하고, 버전 관리할 수 있습니다.
⚡ 모든 PR에 대한 AI 코드 리뷰. Claude와 Codex가 코드의 변경 사항(Diffs)을 읽고, 실행 가능한(Actionable) 코멘트를 남기며, 요청 시 수정 커밋(Fix Commits)을 푸시합니다.
🛠️ 약 30분 만에 배포. 단 하나의 부트스트랩 스크립트, 하나의 설정 파일, 두 개의 웹훅으로 배포를 완료하세요.
사용 방법 (코딩 에이전트와 함께 사용하기)
선호하는 코딩 에이전트(저희는 Codex CLI를 사용합니다)에 다음 프롬프트를 붙여넣으세요.
"이 리포지토리를 내 구글 클라우드 프로젝트에 배포해 줘. GitHub 리포지토리 URL만 제공한 경우 먼저 리포지토리를 클론(Clone)해. 이미 로컬에 리포지토리를 열어둔 상태라면 기존 체크아웃(Checkout)된 상태에서 작업해. 리포지토리의 배포 지침, 스크립트 및 .agents/skills/broccoli-oss-gcp-deploy/SKILL.md를 사용해. 이 요청은 코드베이스를 검사하는 것이 아니라 앱을 배포하라는 요청으로 간주해. 필수 구성 요소(Prerequisites)가 하나도 준비되지 않았다고 가정해. 본격적인 작업 전에 다음 체크포인트를 하나씩 안내하고, 다음 단계로 넘어가기 전에 내 답변을 확인해. README의 해당 섹션이 이 단계를 다루고 있다면 다시 설명하는 대신 해당 섹션을 가리켜.
GCP 프로젝트 및 결제: 결제가 연결된 구글 클라우드 프로젝트가 이미 있는지, 그리고 해당 계정으로
gcloud에 로그인되어 있는지 물어봐. 그렇지 않은 경우 프로젝트 생성(https://console.cloud.google.com/cloud-resource-manager) 및 결제 연결(https://console.cloud.google.com/billing/projects)을 안내해 주거나, 배포 스킬이 나를 위해 프로젝트를 생성해 줄 수 있다고 제안해 줘. 프로젝트 ID를 기록해 둬.GitHub 앱: 필요한 권한(Contents, Pull requests, Issues = 읽기/쓰기; Metadata = 읽기 전용; 'Pull request review' 이벤트 구독)으로 Broccoli용 GitHub 앱을 이미 만들었는지 물어봐. 아직이라면 'README.md -> Deploy it on your GCP -> 1. Create a GitHub App' 단계를 하나씩 안내해 줘. 숫자로 된 앱 ID(App ID)를 기록하고 개인 키 PEM 파일을 로컬에 다운로드하도록 해. 임시 Homepage/Webhook URL은 지금 상태로 괜찮으며, 실제 URL은 부트스트랩(Bootstrap) 과정에서 출력될 거야.
Linear 봇 유저 및 API 키: 중요: Linear API 키는 반드시 전용 Linear 봇 유저에 속해야 하며, 내 개인 계정의 키가 아니어야 해. 개인 키를 사용하면 '봇에게 할당된 이슈가 실행을 트리거'하는 흐름이 자동으로 깨집니다. 전용 봇 유저가 이미 있는지 물어봐. 아직이라면 'README.md -> 2. Designate a Linear bot user'를 안내해 줘. Linear 유저를 생성하거나 지정하고, Broccoli를 통해 이슈를 라우팅(Routing)할 모든 팀에 해당 봇을 추가한 뒤, 해당 봇 유저로 로그인(또는 관리자가 해당 유저로 전환)하여 설정 페이지에서 API 키를 생성해. 준비된 키를 확인하기 전에 내 개인 계정이 아닌 봇 유저의 계정에서 나온 것임을 명시적으로 확인해 줘. 봇 유저 ID를 기록해 둬.
OpenAI 및 Anthropic API 키: 각 계정에서 결제가 활성화된 유효한 API 키를 이미 가지고 있는지 물어봐. 없다면 OpenAI 및 Anthropic API 키 페이지로 보내 생성하도록 해.
Linear 웹훅(Webhook): 이 단계는 나중에 진행되며, 부트스트랩이 서비스 URL을 출력한 후에 구성됩니다. 서비스 URL이 생성되면, 자동 생성된
broccoli-oss-linear-webhook-secret을 사용하여${Service URL}/webhooks/linear를 가리키는 Linear 웹훅을 추가하고 Issue 및 Issue label 이벤트를 구독해야 한다는 점만 지금 알려줘. 지금 당장 이 단계에서 무언가를 할 필요는 없어.Secret Manager 값 채우기: 대상 프로젝트가 존재하면, 4개의 운영자 관리 시크릿(
broccoli-oss-github-app-private-key-pem,broccoli-oss-linear-api...에 대해 각각 작업을 진행해."