원문 캡처 · github.com
원문 캡처 · github.com

OpenProject Agent Engine은 OpenProject 작업 패키지를 확인해 pi 코딩 에이전트에 배정하는 오픈소스 도구다. OpenProject를 기록의 기준으로 삼으며, 엔진이 작업을 선점하고 에이전트별 복제본을 준비한 뒤 프롬프트를 만들고 에이전트를 실행한다. 이후 GitHub와 OpenProject를 대조해 결과를 확인하고 상태 변경까지 처리한다. 에이전트는 상태를 직접 바꾸지 않는다.

Docker 이미지와 이미지 태그를 제공한다. 데모 애니메이션도 확인할 수 있다.

설치와 시작

필요한 환경은 Docker, 프로젝트가 설정된 OpenProject 17(API v3)과 최초 1회 관리자 접근 권한, 각 프로젝트의 GitHub 저장소 및 저장소에 푸시하고 풀 리퀘스트를 병합할 수 있는 토큰이다.

빠른 시작 절차는 다음과 같다.

  1. docs/OPENPROJECT_SETUP.md를 참고해 인스턴스에서 상태, 프로젝트 사용자 지정 필드 GIT_REPO, 작업 패키지 사용자 지정 필드 AGENT, Agent Worker 역할을 한 번 설정한다.
  2. docker/에서 대화형 설정을 실행한다. git clone https://github.com/310networks/openproject-agent-engine op-agent-engine cd op-agent-engine/docker && ./agent-init.sh를 실행하면 된다. 설정을 다시 실행해도 안전하다. OpenProject 토큰을 다시 입력하려면 --reprompt-tokens를 사용한다.
  3. 스택을 시작하기 전에 docker/.env를 완성한다. GH_TOKEN을 추가해야 한다. 전용 검토자 계정을 사용하는 경우(예: 브랜치 보호 규칙 적용) 선택적으로 GH_TOKEN_REVIEWER, GIT_REVIEWER_NAME, GIT_REVIEWER_EMAIL도 추가한다.
  4. docker compose up -d로 스택을 시작하고 docker compose logs -f engine으로 엔진 로그를 확인한다.
  5. OpenProject에 프로젝트를 추가하거나 프로젝트의 GIT_REPO 또는 AGENT 설정을 바꾼 뒤에는 docker compose restart engine을 실행한다. docker/.env를 바꾼 뒤에는 환경 변수를 적용하도록 컨테이너를 다시 만들기 위해 docker compose up -d engine을 실행한다.

대시보드는 http://127.0.0.1:8765에서 제공한다. 자세한 내용은 docs/DASHBOARD.md를 참고한다.

환경 변수와 프로젝트 설정

agent-init.sh는 OpenProject 설정, 에이전트 토큰, 제공자 키를 기록한다. GitHub 토큰은 스크립트가 설정하지 않으므로 스택을 시작하기 전에 직접 docker/.env에 추가해야 한다.

변수의미
OP_BASE_URLOpenProject URL
OP_PROJECT프로젝트 식별자. 하나, 쉼표로 구분한 목록 또는 GIT_REPO가 설정된 모든 프로젝트를 뜻하는 *를 지정한다.
OP_ENGINE_TOKEN런타임 사용자(관리자)의 API 토큰
AGENT_MODEL모든 에이전트에 적용할 <provider>/<model> 형식의 모델. 제공자는 인증 정보 또는 엔드포인트 변수도 선택한다.
AGENT_MODEL_<AGENT>에이전트별 선택 모델. AGENT_MODEL_FRONTEND, ..._BACKEND, ..._DESIGNER, ..._REVIEWER를 지정할 수 있으며, 같은 제공자를 사용한다.
OP_TOKEN_FRONTENDfrontendEngineer의 토큰
OP_TOKEN_BACKENDbackendEngineer의 토큰
OP_TOKEN_DESIGNERleadDesigner의 토큰
OP_TOKEN_REVIEWERcodeReviewer의 토큰
OPENROUTER_API_KEY 또는 다른 제공자 키pi에 사용할 모델 제공자 키 하나
LLAMA_BASE_URL로컬 llama.cpp 제공자를 사용할 때의 llama.cpp 라우터 URL
GH_TOKEN복제, 푸시, 풀 리퀘스트 조회에 사용하는 GitHub 토큰

브랜치 보호 규칙에서 승인자나 병합 계정이 풀 리퀘스트 작성자와 달라야 한다면 codeReviewer에 별도의 GitHub 계정을 제공한다. 이때 GH_TOKEN_REVIEWER를 설정하고, 선택적으로 GIT_REVIEWER_NAME과 GIT_REVIEWER_EMAIL도 지정한다. 검토자는 gh와 git의 계정을 해당 계정으로 전환해 병합 전에 승인 검토를 제출할 수 있다. 별도 토큰이 없으면 모든 에이전트가 GH_TOKEN을 계속 사용한다. 두 토큰이 같은 계정에 속하면 승인자가 달라야 하는 브랜치 보호 규칙이 여전히 병합을 막는다. 이 값들은 직접 docker/.env에 추가해야 하며 설정 스크립트는 더 이상 GitHub 토큰을 묻지 않는다.

모니터링할 각 프로젝트에는 GitHub 저장소를 담은 프로젝트 속성 GIT_REPO가 있어야 한다. 값은 owner/name 또는 github.com URL로 지정한다. 이 속성은 Administration → Projects → Project attributes에서 한 번 만들고 For all projects를 선택한다. 속성 하나가 모든 프로젝트에 할당되므로 프로젝트별 활성화 설정은 없다. AGENT 필드 설정과 마찬가지로 한 번만 설정하면 된다. docker/agent-init.sh가 설정 과정에서 이를 안내한다.

이미지에 포함된 에이전트 팀은 고정되어 있으며, 각 에이전트마다 OpenProject 계정 하나와 토큰 하나를 사용한다.

AGENT 필드 값로그인종류
FRONTENDfrontendEngineer구현자
BACKENDbackendEngineer구현자
LEAD_DESIGNERleadDesigner구현자
REVIEWERcodeReviewer검토자

스크립트가 기록하는 모델 설정의 예는 AGENT_MODEL=openrouter/deepseek/deepseek-v4.1-flash-1017이다.

로컬 llama.cpp 라우터는 호스팅 제공자 키 대신 기본 제공자로 사용할 수 있다. AGENT_MODEL=llama.cpp/<model>과 라우터 URL을 가리키는 LLAMA_BASE_URL을 설정한다. 서버를 --api-key로 시작했다면 LLAMA_API_KEY도 설정해야 한다. 엔진 컨테이너 내부에서 해당 URL에 접속할 수 있어야 한다. 자세한 내용은 docs/CONFIG.md의 llama.cpp 안내를 참고한다.

동시 실행 수, 실행 간격, 상태 이름, 경로, 공유 git 사용자 정보에는 기본값이 설정되어 있다. 전체 설정은 docs/CONFIG.md와 주석이 포함된 docker/.env.example에서 확인할 수 있다.

티켓 처리와 상태 전환

관찰된 상태엔진 동작실행 작업확인된 결과전환 상태
New, 처리 가능, AGENT 설정됨선점 후 In Progress로 변경구현풀 리퀘스트 생성 또는 BLOCKEDReady for Review 또는 On Hold
Ready for Review, 풀 리퀘스트 있음선점 후 In Testing으로 변경검토풀 리퀘스트 병합 또는 REJECTEDClosed 또는 Rejected
Ready for Review, 풀 리퀘스트 없음———On Hold로 바꾸고 댓글 추가
Rejected, 처리 가능선점 후 In Progress로 변경수정구현 작업과 동일구현 작업과 동일

On Hold는 종료 상태다. 사람이 티켓 상태를 바꾸기 전까지 엔진은 해당 티켓을 무시한다. 브랜치 이름은 티켓마다 하나씩 만드는 op-<project>-<wp> 형식이다. 에이전트별 실행 횟수는 MAX_RUNS_PER_AGENT로 제한하며 기본값은 1이다. 엔진이 작성하는 댓글은 모두 ENGINE:으로 시작한다.

문서와 기여

저장소 문서에는 다음 내용이 담겨 있다.

이슈와 풀 리퀘스트를 받는다. 풀 리퀘스트에서는 테스트 모음(ruff, mypy, pytest)을 실행한다. .github/, docker/, pyproject.toml 변경에는 코드 소유자의 검토가 필요하며, 자세한 내용은 .github/CODEOWNERS에 있다.

취약점을 공개 이슈로 올리지 말고 비공개 제보 절차를 이용한다. OpenProject Agent Engine은 MIT License로 배포되는 오픈소스 소프트웨어다.