1인용 Claude Code 바이브 코딩 자동화 도구
Claude Code로 코드를 작성하고 AWS EC2에 배포·진단·수정하는 반복 사이클을 한 화면에서 처리하기 위한 데스크톱 도구.
이 도구는 현재 nullnull.co.kr — 온라인 강의 영상 판매 서비스 — 의 AWS EC2 백엔드 운영에 실제로 사용되고 있습니다. 빌드 → SFTP 업로드 → deploy.sh 재기동 → journalctl 로그 모니터링 → ERROR 발생 시 Claude 분석 요청까지의 일상 운영 루프를 Sidabari 한 화면에서 처리합니다. 데모/실험용이 아닌 프로덕션 운영 도구로 매일 사용 중입니다.
한 화면에 메인 Claude Code · EC2 SSH · 시스템 진단 대시보드 · 도구 콘솔이 함께. 빌드·업로드·배포 자동화와 ERROR 감지 후 진단 루프까지 끊김 없이 진행. (위 스크린샷은 nullnull.co.kr LMS 백엔드 운영 중 캡처)
이 프로젝트의 모든 코드와 문서는 Claude Code가 100% 작성·유지보수합니다. 인간 협업자(
cx8537)는 요구사항 정의·사양 결정·사용자 테스트·방향 검토를 담당했으며, 단 한 줄의 코드도 직접 손대지 않았습니다.
| 역할 | 담당 |
|---|---|
| 코드 작성 / 리팩토링 / 유지보수 | Claude Code (주로 Claude Opus 4.7 1M context, 일부 Sonnet) |
모든 문서 (README.md, SIDABARI_SPEC.md, CLAUDE.md, docs/**) |
Claude Code |
| 사양 결정 · 요구사항 · UX 판단 · 검수 | cx8537 (인간) |
| 라이선스/저작권 보유 | cx8537 (사용자가 도구를 통해 생성한 결과물의 권리) |
매 세션 시작 시 CLAUDE.md가 절대 원칙(추측 금지·자동 재시도 금지·보안 규칙 등)으로 적용되며, 새 기능 추가나 버그 수정도 모두 같은 규칙 아래 Claude Code가 수행합니다. 커밋 메시지에는 Co-Authored-By: Claude 트레일러로 일관 표기됩니다.
Claude Code → 빌드 → SFTP 업로드 → deploy.sh → 로그 모니터링 → ERROR 감지 → 진단 → Claude에 분석 요청, 이 사이클의 기계적인 부분만 자동화합니다. 분석·진단·수정 결정은 항상 사람이 합니다.
핵심 철학:
- 기계적 작업은 자동화, 판단은 사람. Claude는 분석·추천만, 실행은 사람이 결정.
- 자동 재시도 금지. 실패 시 즉시 멈추고 사람이 판단.
- 강제 중단 시 SSH 채널은 유지. 같은 세션에서 수작업으로 이어받기.
자세한 동작 사양은 SIDABARI_SPEC.md, 작업 규칙·보안 정책은 CLAUDE.md를 참고하세요.
처음부터 본인 1명 사용을 가정하고 만든 도구입니다. 같은 워크플로우 — Claude Code로 코딩 → JVM/Spring Boot 같은 백엔드를 AWS EC2(systemd)에 SFTP로 올려 deploy.sh 재기동 → journalctl 로그 모니터링 → ERROR 진단 — 을 쓰는 다른 분이라면 그대로 쓰거나 포크해 본인 환경에 맞게 손보실 수 있습니다. MIT 라이선스로 공개합니다.
룰 엔진 같은 일반화 메커니즘은 일부러 두지 않았습니다. 동작이 코드에 직접 정의되어 있어 본인 워크플로우에 맞춘 변경이 오히려 쉬운 편입니다 (사양서 §1.3 참조).
- 4영역 패널 레이아웃 (좌: 메인 Claude / 중상: 추가 Claude 탭 / 중하: EC2 SSH 메인+진단 / 우: 도구 콘솔). 분할·플로팅·도킹 지원.
- 로컬 PTY로 Claude Code 인스턴스 실행 (
portable-pty+ ConPTY/Unix PTY 추상). - SSH/SFTP 메인+진단 채널 분리 (
russh, 호스트키 TOFU 검증). - 빌드 → 업로드 → 배포 자동 실행 + 단계별 강제 중단 (Ctrl+C 전송, 채널 유지).
- ERROR 자동 감지 (Log4j2
[ERROR]+Caused by전체 체인). - EC2 진단 패널 [자료 일괄 수집] + 시스템 진단 대시보드 (1분 자동갱신 토글).
- 진단 전용 SSH 키 + 서버 ForceCommand 패턴으로 Claude의 자율 진단을 안전하게 (시스템 변경 물리적으로 불가능).
- Claude Code 훅 통합 (Stop/Pre/PostToolUse/Notification/SessionStart) — 패널별 활성도/도구 가시화, 데스크톱 알림, 위험 도구 게이트, 감사 로그(SQLite).
- Tauri command 검증 +
permissions.deny > permissions.allow+ autoMode 분류기 통합.
추가 라이브러리: xterm.js v6, react-resizable-panels, react-rnd, @fontsource-variable/geist, @tauri-apps/api · plugin-clipboard-manager · plugin-dialog · plugin-notification · plugin-window-state.
추가 crate: portable-pty, russh · russh-keys · russh-sftp, serde · serde_json, notify, ssh-key (ed25519), rand_core, sha2, async-trait, uuid.
- Node.js: 20 이상 권장 (개발에 24.x 검증됨)
- Rust toolchain: stable (
rustup권장). Windows는 MSVC 빌드 도구 + WebView2. - OS: 1차 검증은 Windows 11. macOS/Linux는 코드상 호환되나 미검증.
- Claude Code CLI:
claude명령이 PATH에 있어야 메인/추가 Claude 패널에서 자동 spawn 가능. - EC2: SSH 접속 가능한 인스턴스 + (선택) 진단 전용 키 설치를 위한 sudo 권한.
# 1) 의존성 설치
npm install
# 2) Rust + WebView2 등 Tauri 사전 요구사항 점검
npx @tauri-apps/cli info
# 3) 개발 모드 실행 (vite dev + Rust 컴파일 + Tauri 윈도우)
npm run tauri dev빠른 빌드 확인만 필요하면:
npm run build # tsc + vite 프론트엔드 빌드
cargo check --manifest-path src-tauri/Cargo.tomlnpm run tauri build산출물 위치 (Windows 기준):
src-tauri/target/release/sidabari.exe— 단일 실행파일src-tauri/target/release/bundle/— MSI / NSIS 인스톨러
Sidabari/
├── src/ # React 프론트엔드
│ ├── components/
│ │ ├── layout/ # MainLayout, MainToolbar
│ │ ├── panels/ # 4영역 패널 컴포넌트
│ │ ├── terminal/ # PtyTerminal, SshTerminal (xterm 래퍼)
│ │ ├── modals/ # SettingsModal, GateModal, DiagSetupModal
│ │ ├── monitor/ # HookBridge (Claude Code 훅 미러링)
│ │ └── dashboard/ # DiagnosticDashboard
│ ├── lib/ # ssh, pty, config, parseDiagnostic 등 IPC 래퍼
│ └── store/ # Zustand 전역 상태
├── src-tauri/ # Rust 백엔드
│ └── src/
│ ├── pty.rs # 로컬 PTY (portable-pty)
│ ├── ssh.rs # SSH 셸 (russh)
│ ├── ssh_exec.rs # SSH exec / 헤드리스 collect
│ ├── sftp.rs # SFTP 업로드 (sha256 검증)
│ ├── build.rs # 로컬 빌드 명령 spawn
│ ├── config.rs # 설정 load/save (TOML)
│ ├── hooks_bus.rs # Claude Code 훅 IPC (events.jsonl + req/resp)
│ ├── audit_log.rs # SQLite 감사 로그
│ ├── claude_safety.rs # .claude/settings.local.json deny 규칙
│ ├── diag_setup.rs # 원클릭 진단 키페어 + ForceCommand 셋업
│ └── diag_ssh_allow.rs # autoMode allow 패턴 등록
├── docs/
│ └── ec2-diag-setup/ # 서버 측 install.sh, sidabari-collect.sh
├── branding/
│ └── sidabari-icon-source.png # 아이콘 원본 (1024×1024)
├── CLAUDE.md # 작업 절대 원칙 + 보안 가이드 + UI 가이드
├── SIDABARI_SPEC.md # 동작 사양서
└── README.md
- 위치 (OS 표준):
- Windows:
%APPDATA%\sidabari\sidabari.toml - macOS:
~/Library/Application Support/sidabari/sidabari.toml - Linux:
~/.config/sidabari/sidabari.toml
- Windows:
- 앱 내 [설정] 모달에서 편집 (탭: 일반 / 서버 / 빌드·배포 / 모니터링 / 시스템 진단).
- PEM 키는 경로만 저장 — 키 내용은 메모리에만 로드. 로그에 자격증명 안 찍힘.
- 설정 변경 후 [재시작] 또는 자동 재시작 토글로 모든 Claude PTY 일괄 재시작 (
.claude/settings.local.json즉시 반영).
스키마 레퍼런스는 SIDABARI_SPEC.md §5.2, 코드는 src-tauri/src/config.rs / src/lib/config.ts.
진단 전용 SSH 키 + 서버 측 ForceCommand로 잠근 채널을 만들면, Claude의 [시스템 데이터 수집] 명령이 자율적으로 SSH 접속해 진단 자료를 수집해도 시스템 변경이 물리적으로 불가능합니다.
앱의 [설정] → [시스템 진단] → [원클릭 진단 셋업] 버튼으로 일괄 처리:
- 로컬에
~/.ssh/sidabari-diaged25519 키페어 생성/재사용 - SFTP로 서버에
install.sh+sidabari-collect.sh업로드 - 서버에서 sudoers / sshd
Match User/authorized_keyscommand="..."자동 구성
세부 동작은 docs/ec2-diag-setup/README.md 참조.
- 자격증명/키 파일 내용은 메모리에만, 로그·설정·DB에 안 들어감.
- 사용자 입력을 셸 명령 문자열로 직접 조합하지 않음 (러시 구조화 API 사용).
- SSH 호스트 키 TOFU 검증 (자동 수락 모드 X).
- Tauri command 입력 검증 + 위험 도구 게이트 모달.
- 감사 로그 (SQLite) 권한
0600. - 자세한 정책: CLAUDE.md §1.2.
| 문서 | 용도 |
|---|---|
| SIDABARI_SPEC.md | 동작 사양서 (워크플로우 / UI / 설정 스키마) |
| CLAUDE.md | 작업 규칙·보안 가이드·UI 스타일 가이드 (Claude Code 작업 시 1차 참조) |
| docs/ec2-diag-setup/README.md | EC2 진단 키 + ForceCommand 셋업 상세 |
- 1차 UI + 핵심 워크플로우 + Claude Code 훅 통합 + 진단 대시보드까지 구현 완료.
- 프로젝트는 활발히 변경 중 — 사양서가 1차 참조, 이 README는 요약.
MIT License. LICENSE 파일 참조.
이 프로젝트가 유용하셨다면 그대로 쓰셔도, 포크해서 본인 환경에 맞게 손보셔도, 상업적으로 활용하셔도 자유롭습니다. 다만 위험 가능성이 있는 도구(SSH/SFTP/원격 명령 실행)이므로 무보증(AS IS) 조항을 충분히 인지하고 사용해 주세요.





