Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

cx8537/sidabari

Repository files navigation

Sidabari

1인용 Claude Code 바이브 코딩 자동화 도구

Claude Code로 코드를 작성하고 AWS EC2에 배포·진단·수정하는 반복 사이클을 한 화면에서 처리하기 위한 데스크톱 도구.

License: MIT Platform Tauri Rust React Authored by Claude Code


실 운용 사례

이 도구는 현재 nullnull.co.kr — 온라인 강의 영상 판매 서비스 — 의 AWS EC2 백엔드 운영에 실제로 사용되고 있습니다. 빌드 → SFTP 업로드 → deploy.sh 재기동 → journalctl 로그 모니터링 → ERROR 발생 시 Claude 분석 요청까지의 일상 운영 루프를 Sidabari 한 화면에서 처리합니다. 데모/실험용이 아닌 프로덕션 운영 도구로 매일 사용 중입니다.

Sidabari 메인 화면

한 화면에 메인 Claude Code · EC2 SSH · 시스템 진단 대시보드 · 도구 콘솔이 함께. 빌드·업로드·배포 자동화와 ERROR 감지 후 진단 루프까지 끊김 없이 진행. (위 스크린샷은 nullnull.co.kr LMS 백엔드 운영 중 캡처)


저작 기록 (Authorship)

이 프로젝트의 모든 코드와 문서는 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 분류기 통합.

기술 스택

앱 셸

Tauri

프론트엔드

Vite React TypeScript Tailwind CSS shadcn/ui Zustand Zod Lucide

추가 라이브러리: xterm.js v6, react-resizable-panels, react-rnd, @fontsource-variable/geist, @tauri-apps/api · plugin-clipboard-manager · plugin-dialog · plugin-notification · plugin-window-state.

백엔드 (Rust)

Rust Tokio SQLite

추가 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.toml

빌드 (배포 산출물)

npm run tauri build

산출물 위치 (Windows 기준):

  • src-tauri/target/release/sidabari.exe — 단일 실행파일
  • src-tauri/target/release/bundle/ — MSI / NSIS 인스톨러

프로젝트 구조

×ばつ1024) ├── CLAUDE.md # 작업 절대 원칙 + 보안 가이드 + UI 가이드 ├── SIDABARI_SPEC.md # 동작 사양서 └── README.md">
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)
├── 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
  • 앱 내 [설정] 모달에서 편집 (탭: 일반 / 서버 / 빌드·배포 / 모니터링 / 시스템 진단).
  • PEM 키는 경로만 저장 — 키 내용은 메모리에만 로드. 로그에 자격증명 안 찍힘.
  • 설정 변경 후 [재시작] 또는 자동 재시작 토글로 모든 Claude PTY 일괄 재시작 (.claude/settings.local.json 즉시 반영).

스키마 레퍼런스는 SIDABARI_SPEC.md §5.2, 코드는 src-tauri/src/config.rs / src/lib/config.ts.

설정 모달 화면 (5개 탭)

일반
앱 시작 시 claude 자동 실행, 훅 통합 설치, 호스트 IP 마스킹 등
일반 탭 서버 (SSH/SFTP)
EC2 host/user/개인키 경로 + SFTP 업로드 디렉토리
서버 탭
빌드/배포
빌드 명령·작업 디렉토리·jar 경로·타임아웃·배포 명령
빌드/배포 탭 모니터링
로그 모니터 명령·ERROR 정규식·컨텍스트 N줄·캡처 지연
모니터링 탭
시스템 진단
진단 전용 키 + 서버 측 ForceCommand 셋업, Claude Code 권한 정책 (자동 허용 등록 / 안전 규칙 deny 설치)
시스템 진단 탭

EC2 진단 셋업 (선택)

진단 전용 SSH 키 + 서버 측 ForceCommand로 잠근 채널을 만들면, Claude의 [시스템 데이터 수집] 명령이 자율적으로 SSH 접속해 진단 자료를 수집해도 시스템 변경이 물리적으로 불가능합니다.

앱의 [설정] → [시스템 진단] → [원클릭 진단 셋업] 버튼으로 일괄 처리:

  1. 로컬에 ~/.ssh/sidabari-diag ed25519 키페어 생성/재사용
  2. SFTP로 서버에 install.sh + sidabari-collect.sh 업로드
  3. 서버에서 sudoers / sshd Match User / authorized_keys command="..." 자동 구성

세부 동작은 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) 조항을 충분히 인지하고 사용해 주세요.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /