Apache Burr(incubating)는 챗봇·에이전트·시뮬레이션 같이 결정을 내리는 Python 애플리케이션을 만들기 위한 오픈소스 프레임워크다. 상태(state)와 전이(transition)를 명시적으로 모델링하고, 내장 UI로 실행 흐름을 실시간으로 추적하고 디버깅할 수 있다. LangChain·LangGraph 등 기존 LLM 프레임워크와 함께 사용할 수 있으며, LLM 없이도 동작한다.
작동 방식
Burr는 애플리케이션을 상태 머신으로 표현한다. 각 단계(step)는 @action 데코레이터로 정의하고, ApplicationBuilder로 전이 그래프를 조립한다.
from burr.core import action, State, ApplicationBuilder
@action(reads=[], writes=["prompt", "chat_history"])
def human_input(state: State, prompt: str) -> State:
chat_item = {"role": "user", "content": prompt}
return state.update(prompt=prompt).append(chat_history=chat_item)
@action(reads=["chat_history"], writes=["response", "chat_history"])
def ai_response(state: State) -> State:
response = _query_llm(state["chat_history"]) # LLM 호출 방식 자유
chat_item = {"role": "system", "content": response}
return state.update(response=response).append(chat_history=chat_item)
app = (
ApplicationBuilder()
.with_actions(human_input, ai_response)
.with_transitions(
("human_input", "ai_response"),
("ai_response", "human_input")
)
.with_state(chat_history=[])
.with_entrypoint("human_input")
.build()
)주요 특징
- 상태 머신 명시화: 흐름을 코드로 선언해 예상치 못한 상태 전이를 방지
- 내장 모니터링 UI:
burr명령어 하나로 실행 추적·디버깅 웹 UI 시작 - 플러그인 영속성(Persisters): Redis, SQLite 등 다양한 스토리지로 상태를 저장·복원
- 프레임워크 무관: OpenAI, Anthropic, LangChain 등 어떤 LLM 라이브러리와도 연동 가능
- LLM 없이도 사용 가능: 결정 로직이 있는 일반 앱에도 적용 가능
- 인간 개입(Human-in-the-loop): 특정 단계에서 사람의 승인·수정을 삽입할 수 있는 구조
경쟁 도구 비교
| 항목 | Apache Burr | LangGraph | Temporal | LangChain | Apache Hamilton |
|---|---|---|---|---|---|
| 상태 머신 명시 모델링 | ✅ | ✅ | ❌ | ❌ | ❌ |
| 프레임워크 무관 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 비동기 이벤트 기반 오케스트레이션 | ❌ | ❌ | ✅ | ❌ | ❌ |
| 오픈소스 모니터링·추적 UI | ✅ | ❌ | ❌ | ❌ | ✅ |
| LLM 외 범용 사용 | ✅ | ❌ | ❌ | ❌ | ✅ |
LangGraph처럼 상태 머신을 지원하면서도, 오픈소스 모니터링 UI를 기본 제공한다는 점이 Burr의 핵심 차별점이다.
설치 및 시작
pip install "apache-burr[start]"
# 모니터링 UI 실행
burrburr 명령어로 텔레메트리 UI가 열린다. 사이드바에서 데모 챗봇 앱(chatbot)을 선택해 흐름을 직접 확인할 수 있다. OPENAI_API_KEY 없이도 UI 구조 탐색은 가능하다.
# 예제 실행
git clone https://github.com/apache/burr && cd burr/examples/hello-world-counter
python application.py누가 쓰면 좋은가
| 사용자 | 사용 케이스 |
|---|---|
| LLM 앱 개발자 | 챗봇·에이전트 흐름을 명확하게 설계하고 실시간으로 디버깅하고 싶을 때 |
| AI 파이프라인 엔지니어 | 상태를 저장·복원해야 하는 장기 실행 워크플로 구축 |
| 연구자·프로토타이퍼 | LLM 실험 결과를 추적하고 재현 가능하게 기록하고 싶을 때 |
라이선스
Apache 2.0
관련 문서
- n8n — 시각적 노드 기반 워크플로 자동화 (코드리스 접근)
- claude-managed-agents — Anthropic의 관리형 에이전트 플랫폼
참고 자료
- apache/burr — GitHub 공식 저장소
- Apache Burr 공식 문서