Cairn: GitHub 저장소와 연동하는 오픈소스 S/W 엔지니어링 자동화 에이전트(End-to-End SWE Agent)

Cairn 소개

최근 대규모 언어 모델(LLM)의 발전에 따라 개발 업무 자동화에 대한 관심이 크게 증가하고 있습니다. 하지만 대부분의 개발 자동화 도구들은 상용 서비스로 제공되어 소스코드 접근성과 커스터마이징에 제한이 있습니다. 이러한 배경에서 등장한 Cairn은 오픈소스 기반의 백그라운드 에이전트 시스템으로, 개발자가 자신의 GitHub 저장소와 연동하여 End-to-End 소프트웨어 엔지니어링 업무를 자동화할 수 있도록 도와줍니다.

Cairn은 사용자가 직접 소유하는 GitHub App을 통해 저장소에 대한 읽기/쓰기 권한을 제어하며, OpenAI, Anthropic, Gemini 등 다양한 LLM API와 연동이 가능합니다. 따라서 기존의 상용 제품들이 제공하는 자동화 기능을 로컬 환경에서 누구나 투명하게 사용할 수 있다는 점에서 큰 의미가 있습니다. 특히, 단순 코드 작성뿐 아니라 풀스택 작업 분해, 실시간 로그 관리, 저장소 분석 등 다양한 개발 업무를 자동으로 처리할 수 있어, 반복적이고 지루한 작업에서 벗어나 보다 창의적인 업무에 집중할 수 있습니다.

Cairn은 초심자에게도 진입장벽이 낮도록 친절한 설치 가이드와 웹 인터페이스를 제공합니다. 백엔드는 FastAPI, 프론트엔드는 React 기반으로 구성되어 있으며, 로컬 환경에서 에이전트의 동작을 직접 확인할 수 있습니다. 이처럼 Cairn은 누구나 쉽게 접할 수 있으면서도, 강력한 커스터마이징과 확장성을 보장하는 오픈소스 AI 개발 자동화 플랫폼으로 자리매김하고 있습니다.

왜 Cairn이 중요한가?

소프트웨어 프로젝트의 규모가 커질수록 반복적인 작업과 코드 관리가 점점 복잡해집니다. 이 때, 단순 자동화 도구를 넘어 LLM과 결합된 에이전트 기반의 시스템이 도입된다면, 반복적인 개발 업무를 효율적으로 분산 및 자동화할 수 있습니다. Cairn은 이러한 흐름에 맞춰 “실제 코드 변경”과 “Pull Request 생성” 그리고 “작업 분할”까지 지원하는 에이전트들을 계층적으로 구성하여, 복잡한 업무도 병렬적으로 자동 처리할 수 있도록 설계되었습니다. 또한 오픈소스라는 특성상 보안상 민감한 코드나 데이터도 외부에 노출하지 않고, 직접 관리할 수 있습니다.

이처럼 Cairn은 LLM을 활용한 소프트웨어 자동화에 관심 있는 개발자, 스타트업, 조직 모두에게 실질적인 생산성 향상과 커스터마이징의 자유를 동시에 제공합니다.

유사 도구들과의 비교

Cairn은 대표적으로 OpenAI의 Codex, Google의 Jules, Cursor의 Background Agents와 유사한 컨셉을 갖고 있습니다. 그러나 이들 상용 서비스와 달리 Cairn은 완전히 오픈소스로 제공되며, 설치부터 커스터마이징까지 전 과정을 개발자가 직접 제어할 수 있다는 점이 가장 큰 차별점입니다.

또한 지원하는 LLM 범위가 넓고, 각 에이전트의 동작 방식(풀스택 플래너, PM, SWE 등)이 세분화되어 있어 단일 작업뿐 아니라, 대규모 프로젝트의 병렬 작업 자동화에도 유리합니다. Cursor Background Agents는 비슷한 방식의 자동화를 제공하지만, Cairn은 UI/UX, 설치 자유도, 에이전트 룰의 상세 커스터마이징, 오프라인 환경 지원 등에서 확실한 오픈소스만의 장점이 있습니다.

Cairn의 주요 기능 및 아키텍처

graph TB
    UI[Web Dashboard] --> API[FastAPI Backend]
    API --> WM[Worker Manager]
    WM --> FP["Fullstack Planner Agent<br/>(plans long running tasks,<br/>coordinates overall workflow)"]

    subgraph PM_LEVEL[" "]
        direction LR
        PM1["Project Manager 1<br/>(generates a full PR)"]
        PM2["Project Manager 2<br/>(generates a full PR)"]
        PM_MORE["..."]
    end

    FP --> PM1
    FP --> PM2
    FP --> PM_MORE

    PM1 --> SWE1["SWE1<br/>"]
    PM2 --> SWE2["SWE2<br/>"]

    SWE1 <-.->|a2a comms| SWE2

    WM --> DB[(SQLite Database)]
    WM --> LS[Log Storage]

    style PM_LEVEL fill:transparent,stroke:transparent

Cairn의 가장 큰 특징은 실제 개발 업무를 자동화하는 에이전트 시스템입니다. 크게 SWE(Software Engineer), PM(Project Manager), Fullstack Planner의 세 가지 에이전트가 계층적으로 동작합니다.

  • SWE Agent: 독립적인 코드 변경을 자동화하며, 결과물을 브랜치로 생성합니다.
  • PM Agent: 복잡한 작업을 SWE에게 적절히 분배, PR을 생성하고 변경사항을 검토합니다.
  • Fullstack Planner Agent: 대규모 작업을 여러 하위 작업으로 분해한 뒤, 각 작업을 병렬로 처리하고 필요한 경우 에이전트 간 커뮤니케이션을 중재합니다.

아키텍처는 FastAPI를 활용한 백엔드, React 기반 프론트엔드, 그리고 SQLite 기반 데이터베이스로 구성되어 있습니다. 작업 내역, 로그, 저장소 분석 결과 등은 모두 로컬에 안전하게 저장되며, LLM API와의 연동을 통해 고품질의 코드 생성 및 관리가 가능합니다.

Carin 설치 및 빠른 시작 가이드

저장소 복제 및 의존성 설치

# 저장소 복제(Clone)
git clone git@github.com:cairn-dev/cairn.git
cd cairn

# Backend 의존성 설치 (및 Python 가상환경 생성)
python -m venv cairn-env
source cairn-env/bin/activate # Windows의 경우: cairn-env\Scripts\activate
pip install -r requirements.txt

# Frontend 의존성 설치 (Node.js 16 이상 필요)
cd frontend
npm install
cd ..

GitHub App 등록 및 연동

Cairn을 사용하려면 개인 또는 조직 계정으로 GitHub App을 직접 만들어야 합니다:

  • GitHub Apps Settings에서 새 앱 생성
  • 필요한 퍼미션: Contents, Pull requests (읽기/쓰기), Metadata(읽기)
  • App ID, Private Key(.pem 파일), Installation ID 3가지를 확보 후 .env, repos.json에 각각 저장

환경변수 및 저장소 연결

.env 파일과 repos.json 파일을 예시에 따라 작성합니다.

.env은 다음과 같이 GitHub App을 생성한 정보와 LLM API Key를 지정합니다. 다음은 .env 예시입니다:

GITHUB_APP_ID=your_app_id_here
GITHUB_PRIVATE_KEY_PATH=your_private_key_file.pem
GITHUB_TOKEN=your_github_token_here
OPENAI_API_KEY=your_openai_api_key_here

repos.json은 다음과 같이 설정합니다:

{
  "your-github-username-or-org": {
    "connected_repos": ["your-repo-name"],
    "installation_id": 12345678
  }
}

서버 실행

Backend 및 Frontend 서버를 실행합니다. 이 때, 자동 실행 스크립트(추천)를 사용하는 방법과, 각자 실행하는 방법이 있습니다:

# 자동 실행 스크립트 사용(추천)
./run.sh

# 수동 실행 - 백엔드
python fastapi_app/app.py
# 수동 실행 - 프론트엔드
cd frontend && npm run dev

실행 후에는, 브라우저에서 http://localhost:5173/ 에 접속하여 확인합니다.

Cairn 웹 인터페이스 및 첫 작업 생성 방법

웹 대시보드에 접속하면, New Task 버튼 또는 ctrl+k 단축키로 작업을 생성할 수 있습니다. 각 작업은 다음과 같은 에이전트 타입 중 선택하여 실행됩니다:

  • SWE (단일 코드 작업)
  • PM (서브태스크 분배 및 PR 생성)
  • Fullstack Planner (여러 태스크 병렬 처리 및 전체 작업 조율)

진행 상황은 실시간 로그와 상태창을 통해 확인할 수 있으며, 작업별 결과물(브랜치, PR 등)은 깃허브 저장소에서 직접 관리됩니다.

저장소 분석 및 부가 기능

Cairn은 깃허브 토큰을 추가로 등록하면, 연결된 저장소의 Contributor 통계, 언어 분포, 커밋 패턴, 코드 오너십 등 강력한 분석 기능도 제공합니다. 이는 프로젝트 관리에 유용한 통계 자료를 시각적으로 제공합니다.

내부 구조 및 확장성

  • .cairn/ 폴더 내에 각종 설정 및 메모리 파일을 저장
  • settings.json 파일로 에이전트의 행동 규칙(예: “TypeScript만 사용”, “에러 핸들링 강화”)을 세밀하게 설정 가능
  • 각 저장소별 persistent memory로 반복 작업의 비용과 시간을 절감
  • 확장 가능한 구조로, 커스텀 에이전트, 툴박스, 데이터 연동 기능 등 자유롭게 추가 개발 가능

라이선스

Cairn 프로젝트는 MIT 라이선스로 공개 및 배포되고 있습니다. 상업적 이용 및 커스터마이징에 제한이 없으나, 자세한 조항은 라이선스 원문을 참고해 주세요.

:github: Cairn 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: