<p align="center">
<img src="https://raw.githubusercontent.com/raiyanyahya/build-pipe/HEAD/assets/icon.png" width="80" alt="buildpipe logo" />
</p>
<h1 align="center">buildpipe</h1>
<p align="center">
개발자를 위한 로컬 우선 파이프라인 자동화 앱 — AI가 구동하며, 사용자의 기기에서 네이티브로 실행됩니다.
</p>
<p align="center">
<img src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux-blue?style=flat-square" />
<img src="https://img.shields.io/badge/built%20with-Electron-47848f?style=flat-square&logo=electron" />
<img src="https://img.shields.io/badge/AI-OpenAI%20%7C%20Anthropic-8b5cf6?style=flat-square" />
<img src="https://img.shields.io/badge/license-MIT-22c55e?style=flat-square" />
<img src="https://img.shields.io/badge/version-1.0.0-f59e0b?style=flat-square" />
<img src="https://img.shields.io/badge/node-%3E%3D18-339933?style=flat-square&logo=node.js" />
<a href="https://github.com/raiyanyahya/build-pipe/actions/workflows/ci.yml"><img src="https://github.com/raiyanyahya/build-pipe/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/raiyanyahya/build-pipe/HEAD/assets/buildpipe.gif" alt="buildpipe demo" width="720" />
</p>
buildpipe란 무엇인가요?
buildpipe는 클라우드 구독 없이, YAML 설정 파일 없이, 그리고 사용자의 기기를 벗어나지 않고도 다단계 개발자 워크플로우를 구성하고 실행하며 자동화할 수 있게 해주는 독립형 데스크톱 앱입니다.
이것을 로컬 Zapier나 n8n처럼 생각하시면 됩니다. buildpipe는 셸 명령어(shell commands), AI 호출(AI calls), HTTP 요청(HTTP requests), 파일 작업을 재사용 가능한 파이프라인으로 연결하는 것을 원하는 개발자를 위해 특별히 제작되었으며, 이를 스케줄에 따라, 파일 변경 시, 또는 웹훅을 통해 트리거할 수 있습니다.
주요 기능
파이프라인 에디터
리스트 뷰(List view) 또는 **플로우(Flow) 캔버스 뷰(canvas view)**에서 빌드 파이프라인을 시각적으로 구축할 수 있습니다.
- 목록 보기에서 드래그 앤 드롭 단계 재배치
- 캔버스 보기에서 패닝 및 줌 기능을 이용한 자유 형식 노드 배치
- 모든 단계 설정의 인라인 편집
- 실행 취소 / 다시 실행 (Ctrl/⌘+Z)
- 초안(Draft) 및 게시됨(Published) 상태 관리
- 디바운스(debounce)를 사용한 자동 저장
단계 유형 (Step Types)
파이프라인의 각 단계는 다음 유형 중 하나입니다:
CODE — 셸 명령어
사용자의 장치에서 모든 셸 명령을 실행합니다. 출력은 캡처되어 다운스트림 단계에서 사용할 수 있습니다.
command: curl https://api.github.com/events | head -5
AI — 언어 모델 호출
OpenAI 또는 Anthropic에 프롬프트를 보내고 응답을 다운스트림에서 사용합니다. 시스템 프롬프트(system prompt)를 지원합니다.
prompt: Summarise this: {{fetch_data.output}}
system: You are a concise technical analyst.
HTTP — HTTP 요청
모든 공개 URL에 대해 GET, POST, PUT, PATCH 또는 DELETE 요청을 보냅니다.
method: POST
url: https://api.example.com/process
body: {"input": "{{prev_step.output}}"}
FILE — 파일 읽기 / 쓰기 / 추가
홈 디렉터리 어디에서든 파일을 읽거나 쓸 수 있습니다.
operation: write
path: ~/notes/briefing.md
content: {{ai_summary.output}}
IF — 조건 분기
이전 단계의 출력을 특정 조건과 비교합니다. 결과에 따라 파이프라인을 중지하거나 계속 진행할 수 있습니다.
| 연산자 (Operator) | 설명 (Description) |
|---|
contains | 값이 해당 문자열을 포함함 |
| ... | |
| false일 경우: 파이프라인 중지 또는 어쨌든 계속 진행. | |
LOOP — 목록 반복
이전 단계에서 가져온 JSON 배열(또는 줄 바꿈으로 구분된 목록)을 구문 분석하고, 항목당 서브 단계를 한 번 실행합니다. 현재 항목을 참조하려면 {{_item.output}}를 사용합니다.
items: {{fetch_urls.output}}
step_type: code
command: curl -o /dev/null -s -w "%{http_code}" {{_item.output}}
...
NOTIFY — 알림 전송
macOS/Linux 시스템 알림을 보내거나 웹훅(Slack, Discord 등)으로 POST 요청을 보냅니다.
channel: system
title: 파이프라인 완료
message: {{ai_summary.output}}
channel: webhook
webhook_url: https://hooks.slack.com/...
message: {{ai_summary.output}}
단계 연결 (Step Chaining)
모든 단계의 모든 필드는 {{단계_ID.output}}을 사용하여 이전 단계의 출력을 참조할 수 있습니다. 단계 ID는 해당 단계의 레이블에서 파생됩니다.
{{fetch_repos.output}} ← "Fetch repos"로 레이블이 지정된 단계의 출력
{{ai_summary.output}} ← "AI Summary"로 레이블이 지정된 단계의 출력
{{_item.output}} ← 현재 반복 항목 (Loop 단계 내부)
내장 템플릿 변수:
{{date}} ← 오늘 날짜 (YYYY-MM-DD)
{{timestamp}} ← 유닉스 타임스탬프
{{vars.KEY}} ← 저장된 변수 (변수 참조)
오류 처리 (Error Handling)
모든 단계에는 오류 처리 섹션(기본적으로 접혀 있음)이 있습니다:
| 옵션 | 값 |
|---|
| 오류 시 재시도 | 없음 · 1× · 2× · 3× (지수 백오프 적용) |
| 실패 시 | 파이프라인 중지 · 계속 진행 |
재시도는 증가하는 지연 시간(1초, 2초, 3초)을 사용합니다. 계속 진행으로 설정하지 않는 한, 첫 번째 실패 단계에서 파이프라인이 중단됩니다.
트리거 (Triggers)
각 파이프라인은 이를 자동으로 실행하는 하나의 트리거를 가질 수 있습니다. 에디터의 ⚡ 트리거에서 구성합니다.
스케줄 (cron)
파이프라인을 N분마다 또는 매일 실행합니다. 외부 데몬이 필요하지 않으며, 트리거는 앱 내부에 존재합니다.
파일 감시 (File watch)
파일이나 디렉토리를 감시합니다. 변경 사항이 감지되면 500ms 후에 파이프라인이 실행됩니다(디바운스 적용).
path: ~/Documents/inbox/input.txt
웹훅 (Webhook)
로컬 HTTP 엔드포인트를 노출합니다. POST 요청을 보내 파이프라인을 실행할 수 있습니다. 이는 CI 훅, 스크립트 또는 기타 앱에 유용합니다.
POST http://127.0.0.1:9876/run/<pipeline-id>
포트는 구성 가능합니다(기본값: 9876). 127.0.0.1에서만 수신 대기합니다.
모든 트리거는 ~/.buildpipe/triggers.json에 저장되며, 앱이 시작될 때마다 재활성화됩니다.
변수 스토어 (Variables Store)
재사용 가능한 값(API 토큰, 엔드포인트, 사용자 이름 등)을 저장하고 {{vars.KEY}}를 사용하여 모든 단계 필드에서 참조할 수 있습니다.
변수는 설정 → 변수에서 관리합니다. ~/.buildpipe/vars.json에 일반 텍스트로 저장됩니다.
{{vars.GITHUB_TOKEN}} ← 저장된 토큰
{{vars.SLACK_WEBHOOK}} ← 저장된 URL
{{vars.MY_USERNAME}} ← 모든 값
실행 기록 (Run History)
모든 파이프라인 실행은 ~/.buildpipe/runs/에 JSON 파일로 저장됩니다. 에디터의 ⏱ 기록 패널을 열어 다음 내용을 확인할 수 있습니다:
- 실행 타임스탬프, 상태 및 총 지속 시간
- 단계별: 레이블, 유형, 성공/실패 여부, 출력 미리보기 및 지속 시간
- 파이프라인당 최대 100개 최근 실행 기록 보존
어떤 실행을 클릭하면 단계별 상세 내역이 펼쳐집니다.
AI 빌드 (AI Build)
일반 영어로 파이프라인을 설명하고 AI가 모든 단계를 생성하도록 하세요.
대시보드 또는 에디터에서 ✦ AI를 이용한 빌드를 클릭합니다. 파이프라인이 수행해야 할 내용을 입력하거나, 내장된 예제 중 하나를 선택하세요:
- HN의 인기 스토리 가져오기 및 AI로 요약하여 파일 저장하기
- GitHub 알림 확인 및 일일 요약 초안 작성하기
- 날씨 데이터 가져와 아침 브리핑 생성하기
- CSV 읽기, AI로 트렌드 분석하고 보고서 내보내기
AI는 구조화된 JSON 파이프라인(이름 + 구성 정보를 가진 단계)을 생성하며, 이는 즉시 에디터에 로드되어 실행할 준비가 됩니다.
파이프라인 템플릿 (Pipeline Templates)
클릭 한 번으로 복제하고 사용자 정의할 수 있는 43개의 완성된 파이프라인을 제공합니다. 대시보드에서 템플릿을 여세요.
개발자 생산성 (Developer Productivity)
| 템플릿 | 설명 |
|---|
| 🌅 아침 개발 브리핑 | GitHub 인기 저장소 + 시스템 정보 → AI 브리핑 → 파일 |
| ... | |
시스템 및 DevOps (System & DevOps)
| 템플릿 | 설명 |
|---|
| 💽 디스크 공간 경고 | 디스크 사용량 확인 → 파티션 중 어느 하나가 80%를 초과하면 알림 |
| ... | |
AI 기반 글쓰기 (AI-Powered Writing)
AI 제공업체 (AI Providers)
buildpipe는 두 가지 AI 제공업체를 지원하며, 이는 **설정(Settings)**에서 전환할 수 있습니다.
| 제공업체 | 기본 모델 |
|---|
| OpenAI | gpt-4o-mini |
| Anthropic | claude-sonnet-4-6 |
API 키는 Electron의 safeStorage(OS 키체인 백킹)를 사용하여 디스크에 암호화되어 저장됩니다. 키는 제공업체의 자체 API가 아닌 다른 곳으로는 절대 전송되지 않습니다.
대시보드에는 현재 모델과 키 활성화 여부를 나타내는 녹색/호박색 표시기가 표시됩니다.
테마 (Themes)
일곱 가지 내장 색상 테마: Dark · Ocean · Forest · Sunset · Midnight · Light · Cream. 설정에서 전환할 수 있습니다. 테마는 세션 전반에 걸쳐 유지됩니다.
시작하기 (Getting Started)
필수 조건 (Prerequisites)
설치 및 실행 (Install and run)
git clone https://github.com/raiyanyahya/buildpipe.git
cd buildpipe
npm install
...
배포 가능한 빌드 생성하기 (Build a distributable)
결과는 dist/ 디렉토리에 저장됩니다.
데이터 및 개인정보 보호 (Data & Privacy)
모든 데이터는 사용자의 장치에 머무릅니다:
| 경로 | 내용 |
|---|
~/.buildpipe/staircases/ | 파이프라인 JSON 파일 |
| ... | |
| 없음 전송(No telemetry). 클라우드 동기화 없음. 계정 없음. | |
키보드 단축키 (Keyboard Shortcuts)
| 단축키 | 동작 |
|---|
⌘/Ctrl + Z | 실행 취소 (Undo) |
| ... | |
기술 스택 (Tech Stack)
- Electron — 네이티브 데스크톱 셸
- Vanilla JS (ES Modules) — 프레임워크 없음, 번들러 없음
- CSS Custom Properties — 테마 시스템
- Node.js 내장 기능 — 모든 I/O를 위한
fs, http, child_process
- Electron safeStorage — OS 수준 키 암호화
라이선스 (License)
MIT © raiyanyahya