오늘은 최근 HuggingFace에서 공개한 Daggr라는 도구에 대해서 알아보려 한다. 2026년 1월 29일에 공개된 따끈따끈한 신상인데, AI 파이프라인 구축할 때 겪는 여러 문제들을 해결할 수 있는 도구라고 한다.
Daggr가 뭐냐면
쉽게 말해, 여러 AI 모델이나 처리 단계를 연결해서 복잡한 워크플로우를 만드는 Python 라이브러리다.
Gradio 팀에서 만들었는데, Gradio 앱, ML 모델, 커스텀 함수를 블록처럼
조립할 수 있다.
예를 들어, "이미지 생성 → 배경 제거 → 3D 에셋 변환"이라는 10단계 파이프라인이 있다고 치자.
기존 방식으로는 중간에 뭔가 잘못되면 전체를 다시 돌려야 했는데, Daggr는 각 단계를 독립적으로 재실행하고 결과를 확인할 수 있다.
나는 처음에 "또 하나의 GUI 도구겠지" 싶었는데, 막상 보니 접근이 좀 달랐다.
코드로 정의하면 자동으로 비주얼 캔버스가 생성되는 식이다.
즉 코드 기반의 버전 관리도 되면서, 디버깅은 GUI로 편하게 할 수 있다는 것이다.

Background
AI 애플리케이션 개발할 때 겪는 문제가 있다.
기존 방식의 문제점
- API 체이닝이 복잡하다
여러 모델을 연결할 때 관리가 어렵다. 어떤 모델이 어떤 입력을 받고 출력을 내는지 추적하기 힘들다. - 디버깅이 비효율적이다
10단계 파이프라인에서 7번째 단계가 잘못됐는데, 전체를 다시 실행해야 한다니... 시간과 비용 낭비가 심하다. - 중간 결과를 보기 어렵다
각 단계의 출력이 어떤지 확인하려면 별도로 코드를 짜거나 로그를 뒤져야 한다. - 선택지가 극단적이다
- GUI 에디터: 시각적이지만 버전 관리 안 됨
- 무거운 오케스트레이션 플랫폼: 기능은 많은데 학습 곡선 가파름
- 순수 스크립트: 버전 관리는 되는데 디버깅 지옥
Daggr의 해결책
| 문제 | Daggr의 접근 |
|---|---|
| API 체이닝 복잡성 | 노드 기반 연결로 시각화 |
| 디버깅 비효율 | 각 노드별 독립 재실행 가능 |
| 중간 결과 추적 | 모든 노드 출력 자동 표시 |
| 버전 관리 vs GUI | 코드 우선 + 자동 비주얼 캔버스 |
쉽게 말해, "Python 코드로 정의하면 알아서 GUI가 생기고, 각 단계별로 실행/검사할 수 있다"는 것이다.
핵심 기능들
1. 코드 기반 + 자동 시각화
Daggr의 가장 큰 특징은 이거다.
# 코드로 정의
image_gen = GradioNode(...)
bg_remover = GradioNode(...)
graph = Graph(nodes=[image_gen, bg_remover])
graph.launch() # 자동으로 비주얼 캔버스 생성
이렇게 하면 자동으로 각 노드가 시각화되고, 연결 관계가 그려진다. Git으로 코드 관리도 되고, 디버깅은 GUI로 할 수 있다니 꽤 괜찮은 아이디어다.

2. 노드별 재실행
10단계 파이프라인에서 7번째 단계만 문제면? 그 단계만 다시 돌리면 된다. 이전 단계들의 결과는 캐시되어 있어서 시간 낭비가 없다.
심지어 "백업 노드"라는 게 있어서, 특정 모델이나 Space를 다른 걸로 교체해서 다시 실행할 수도 있다고 한다. A 모델로 했는데 결과가 별로면, B 모델로 바꿔서 해당 단계만 재실행하는 식이다.
3. Gradio 통합
Gradio 팀이 만들었으니 당연한데, Gradio Space를 그냥 갖다 쓸 수 있다. 어댑터나 래퍼 없이 Space 이름만 입력하면 끝이다.
node = GradioNode(
"hf-applications/Z-Image-Turbo",
api_name="/generate_image",
inputs={"prompt": gr.Textbox(...)},
outputs={"image": gr.Image(...)},
)
공개 Space든 비공개 Space든 참조 가능하고, 심지어 run_locally=True 옵션을 주면 Space를 로컬로 복제해서 격리된 가상환경에서 실행한다. 로컬 실행 실패하면 자동으로 원격 API로 폴백된다고 한다.
4. 상태 지속성 (State Persistence)
Daggr는 워크플로우 상태를 자동으로 저장한다.
- 입력값
- 캐시된 결과
- 캔버스 위치
즉, 작업하다가 브라우저 끄고 다시 켜도 이어서 할 수 있다는 얘기다. "Sheets"라는 기능도 있어서 동일한 앱 내에서 여러 워크스페이스를 유지할 수 있다고 한다.
지원하는 노드 타입
Daggr는 3가지 타입의 노드를 지원한다.
1️⃣ GradioNode - Gradio Space 또는 로컬 앱
# 원격 Space 호출
image_gen = GradioNode(
"hf-applications/Z-Image-Turbo",
api_name="/generate_image",
inputs={
"prompt": gr.Textbox(label="Prompt", value="A cheetah...", lines=3),
"height": 1024,
"width": 1024,
"seed": random.random,
},
outputs={
"image": gr.Image(label="Generated Image"),
},
)
# 로컬 실행
bg_remover = GradioNode(
"hf-applications/background-removal",
api_name="/image",
run_locally=True, # Space를 로컬에 복제해서 실행
inputs={"image": gr.Image(label="Input")},
outputs={"final_image": gr.Image(label="Output")},
)
run_locally=True를 쓰면 Space가 자동으로 복제되고, 격리된 가상환경에서 앱이 실행된다. 실패하면 알아서 원격으로 전환된다.
2️⃣ FnNode - 커스텀 Python 함수
def downscale_image(image, scale: float = 0.25):
pil_img = Image.open(image)
w, h = pil_img.size
new_w = int(w * scale)
new_h = int(h * scale)
resized = pil_img.resize((new_w, new_h), resample=Image.LANCZOS)
return resized
downscaler = FnNode(
downscale_image,
name="Downscale image",
inputs={
"image": previous_node.output, # 이전 노드 연결
"scale": gr.Slider(minimum=0.25, maximum=0.75, value=0.25),
},
outputs={
"image": gr.Image(label="Downscaled Image"),
},
)
일반 Python 함수를 노드로 만들 수 있다. 데이터 전처리나 간단한 변환 작업에 유용하다.
3️⃣ InferenceNode - HuggingFace Inference Providers
flux_enhancer = InferenceNode(
model="black-forest-labs/FLUX.2-klein-4B:fal-ai", # model:provider 형식
inputs={
"image": downscaler.image, # 이전 노드 출력 연결
"prompt": gr.Textbox(label="Prompt", value="Transform this into 3D"),
},
outputs={
"image": gr.Image(label="Enhanced Image"),
},
)
HuggingFace Inference API를 바로 호출할 수 있다. model:provider 형식으로 지정하면 된다.
설치 및 실행
설치
pip install daggr
# 또는
uv pip install daggr
Python 3.10 이상이 필요하다.
배포
로컬 공유 링크:
graph.launch(share=True) # 공개 URL 생성
HuggingFace Spaces 배포:
requirements.txt에daggr추가- Gradio SDK로 Space 생성
- 코드 푸시
⚠️ 주의: InferenceNode 사용 시 HuggingFace 세밀한 액세스 토큰(fine-grained token)으로 "Inference Providers 호출" 권한만 부여하는 게 안전하다.
현재 상태 및 주의사항
Daggr는 베타 버전이다. 즉 API가 변경될 수 있다는 얘기다.
주의할 점:
- 워크플로우 상태는 로컬에 저장되는데, 업데이트 중 데이터 손실 가능성이 있다고 한다.
- 아직 초기 단계라 버그나 예상치 못한 동작이 있을 수 있다.
- 피드백은 GitHub Issues로 보내면 된다.
예제 Space:
Daggr Image To 3d - a Hugging Face Space by merve
This app transforms your uploaded images into professional 3D-ready assets. First, it removes the background from your image, then enhances it with AI to create a clean 3D render. Finally, it gener...
huggingface.co
여기 들어가서 실제로 어떻게 동작하는지 확인해 볼 수 있다.
마무리
핵심 정리:
- 코드 기반 + 자동 시각화: 버전 관리와 직관성을 둘 다 잡음
- 노드별 재실행: 디버깅 효율성 대폭 향상
- Gradio 통합: Space를 그냥 갖다 쓸 수 있음
- 상태 지속성: 작업 이어하기 가능
나는 아직 실제 프로젝트에 써본 건 아니지만, 프로토타이핑이나 빠른 실험에는 상당히 유용할 것 같다는 생각이 든다. 특히 여러 모델을 조합해서 뭔가 만들 때 기존 방식보다 훨씬 편할 것 같다.
다만 베타라서 프로덕션에 바로 쓰기는 좀 그렇고, 앞으로 어떻게 발전할지 지켜봐야 할 듯하다. 관심 있으면 한번 써보길 바란다!
참고 자료:
'알쓸신잡' 카테고리의 다른 글
| Cloudflare R2 가입 & 설정 가이드 (0) | 2026.02.05 |
|---|---|
| Claudian-옵시디언에서 Claude Code 사용하기 (0) | 2026.02.04 |
| Microsoft VibeVoice-ASR (0) | 2026.02.02 |
| PaddleOCR-VL-1.5-초경량 OCR의 새로운 강자 (0) | 2026.02.02 |
| STAX - 구글이 내놓은 LLM 평가 플랫폼 (0) | 2026.01.26 |