[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11449":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":14,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":17,"hasPages":17,"topics":19,"createdAt":8,"pushedAt":8,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},11449,"sidabari","cx8537\u002Fsidabari","cx8537",null,"TypeScript",113,44,1,0,24,44.36,"Other",false,"master",[],"2026-06-12 04:00:55","# Sidabari\n\n> **1인용 Claude Code 바이브 코딩 자동화 도구**\n>\n> Claude Code로 코드를 작성하고 AWS EC2에 배포·진단·수정하는 반복 사이클을 한 화면에서 처리하기 위한 데스크톱 도구.\n\n![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow?style=flat-square)\n![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlatform-Windows_11-0078D6?style=flat-square&logo=windows11&logoColor=white)\n![Tauri](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTauri-2.x-24C8DB?style=flat-square&logo=tauri&logoColor=white)\n![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-stable-000000?style=flat-square&logo=rust&logoColor=white)\n![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61DAFB?style=flat-square&logo=react&logoColor=black)\n![Authored by Claude Code](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAuthored_by-Claude_Code-D97757?style=flat-square&logo=anthropic&logoColor=white)\n\n---\n\n## 실 운용 사례\n\n이 도구는 현재 [**nullnull.co.kr**](https:\u002F\u002Fnullnull.co.kr) — 온라인 강의 영상 판매 서비스 — 의 AWS EC2 백엔드 운영에 실제로 사용되고 있습니다. 빌드 → SFTP 업로드 → `deploy.sh` 재기동 → journalctl 로그 모니터링 → ERROR 발생 시 Claude 분석 요청까지의 일상 운영 루프를 Sidabari 한 화면에서 처리합니다. 데모\u002F실험용이 아닌 **프로덕션 운영 도구**로 매일 사용 중입니다.\n\n![Sidabari 메인 화면](docs\u002Fimages\u002Fmain.jpg)\n\n> 한 화면에 메인 Claude Code · EC2 SSH · 시스템 진단 대시보드 · 도구 콘솔이 함께. 빌드·업로드·배포 자동화와 ERROR 감지 후 진단 루프까지 끊김 없이 진행. (위 스크린샷은 nullnull.co.kr LMS 백엔드 운영 중 캡처)\n\n---\n\n## 저작 기록 (Authorship)\n\n> **이 프로젝트의 모든 코드와 문서는 [Claude Code](https:\u002F\u002Fwww.anthropic.com\u002Fclaude-code)가 100% 작성·유지보수합니다.** 인간 협업자(`cx8537`)는 요구사항 정의·사양 결정·사용자 테스트·방향 검토를 담당했으며, **단 한 줄의 코드도 직접 손대지 않았습니다.**\n\n| 역할 | 담당 |\n|---|---|\n| 코드 작성 \u002F 리팩토링 \u002F 유지보수 | Claude Code (주로 Claude Opus 4.7 1M context, 일부 Sonnet) |\n| 모든 문서 (`README.md`, `SIDABARI_SPEC.md`, `CLAUDE.md`, `docs\u002F**`) | Claude Code |\n| 사양 결정 · 요구사항 · UX 판단 · 검수 | cx8537 (인간) |\n| 라이선스\u002F저작권 보유 | cx8537 (사용자가 도구를 통해 생성한 결과물의 권리) |\n\n매 세션 시작 시 [CLAUDE.md](CLAUDE.md)가 절대 원칙(추측 금지·자동 재시도 금지·보안 규칙 등)으로 적용되며, 새 기능 추가나 버그 수정도 모두 같은 규칙 아래 Claude Code가 수행합니다. 커밋 메시지에는 `Co-Authored-By: Claude` 트레일러로 일관 표기됩니다.\n\n---\n\n## 무엇을 해 주는가\n\nClaude Code → 빌드 → SFTP 업로드 → `deploy.sh` → 로그 모니터링 → ERROR 감지 → 진단 → Claude에 분석 요청, 이 사이클의 **기계적인 부분만** 자동화합니다. 분석·진단·수정 결정은 항상 사람이 합니다.\n\n핵심 철학:\n\n- **기계적 작업은 자동화, 판단은 사람.** Claude는 분석·추천만, 실행은 사람이 결정.\n- **자동 재시도 금지.** 실패 시 즉시 멈추고 사람이 판단.\n- **강제 중단 시 SSH 채널은 유지.** 같은 세션에서 수작업으로 이어받기.\n\n자세한 동작 사양은 [SIDABARI_SPEC.md](SIDABARI_SPEC.md), 작업 규칙·보안 정책은 [CLAUDE.md](CLAUDE.md)를 참고하세요.\n\n---\n\n## 사용 대상\n\n처음부터 본인 1명 사용을 가정하고 만든 도구입니다. 같은 워크플로우 — **Claude Code로 코딩 → JVM\u002FSpring Boot 같은 백엔드를 AWS EC2(systemd)에 SFTP로 올려 `deploy.sh` 재기동 → journalctl 로그 모니터링 → ERROR 진단** — 을 쓰는 다른 분이라면 그대로 쓰거나 포크해 본인 환경에 맞게 손보실 수 있습니다. MIT 라이선스로 공개합니다.\n\n룰 엔진 같은 일반화 메커니즘은 일부러 두지 않았습니다. 동작이 코드에 직접 정의되어 있어 본인 워크플로우에 맞춘 변경이 오히려 쉬운 편입니다 (사양서 §1.3 참조).\n\n---\n\n## 주요 기능\n\n- **4영역 패널 레이아웃** (좌: 메인 Claude \u002F 중상: 추가 Claude 탭 \u002F 중하: EC2 SSH 메인+진단 \u002F 우: 도구 콘솔). 분할·플로팅·도킹 지원.\n- **로컬 PTY로 Claude Code 인스턴스 실행** (`portable-pty` + ConPTY\u002FUnix PTY 추상).\n- **SSH\u002FSFTP 메인+진단 채널 분리** (`russh`, 호스트키 TOFU 검증).\n- **빌드 → 업로드 → 배포 자동 실행** + 단계별 강제 중단 (Ctrl+C 전송, 채널 유지).\n- **ERROR 자동 감지** (Log4j2 `[ERROR]` + `Caused by` 전체 체인).\n- **EC2 진단 패널 [자료 일괄 수집]** + **시스템 진단 대시보드** (1분 자동갱신 토글).\n- **진단 전용 SSH 키 + 서버 ForceCommand** 패턴으로 Claude의 자율 진단을 안전하게 (시스템 변경 물리적으로 불가능).\n- **Claude Code 훅 통합** (Stop\u002FPre\u002FPostToolUse\u002FNotification\u002FSessionStart) — 패널별 활성도\u002F도구 가시화, 데스크톱 알림, 위험 도구 게이트, 감사 로그(SQLite).\n- **Tauri command 검증** + `permissions.deny > permissions.allow` + autoMode 분류기 통합.\n\n---\n\n## 기술 스택\n\n### 앱 셸\n\n![Tauri](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTauri_2.x-24C8DB?style=for-the-badge&logo=tauri&logoColor=white)\n\n### 프론트엔드\n\n![Vite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-646CFF?style=for-the-badge&logo=vite&logoColor=white)\n![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact_19-61DAFB?style=for-the-badge&logo=react&logoColor=black)\n![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white)\n![Tailwind CSS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTailwind_v4-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white)\n![shadcn\u002Fui](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fshadcn%2Fui-000000?style=for-the-badge&logo=shadcnui&logoColor=white)\n![Zustand](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FZustand-443E38?style=for-the-badge)\n![Zod](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FZod-3068B7?style=for-the-badge&logo=zod&logoColor=white)\n![Lucide](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLucide_Icons-F56565?style=for-the-badge&logo=lucide&logoColor=white)\n\n추가 라이브러리: xterm.js v6, react-resizable-panels, react-rnd, @fontsource-variable\u002Fgeist, @tauri-apps\u002Fapi · plugin-clipboard-manager · plugin-dialog · plugin-notification · plugin-window-state.\n\n### 백엔드 (Rust)\n\n![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-000000?style=for-the-badge&logo=rust&logoColor=white)\n![Tokio](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTokio-B22222?style=for-the-badge)\n![SQLite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSQLite_(rusqlite_bundled)-003B57?style=for-the-badge&logo=sqlite&logoColor=white)\n\n추가 crate: portable-pty, russh · russh-keys · russh-sftp, serde · serde_json, notify, ssh-key (ed25519), rand_core, sha2, async-trait, uuid.\n\n---\n\n## 사전 준비\n\n- **Node.js**: 20 이상 권장 (개발에 24.x 검증됨)\n- **Rust toolchain**: stable (`rustup` 권장). Windows는 MSVC 빌드 도구 + WebView2.\n- **OS**: 1차 검증은 Windows 11. macOS\u002FLinux는 코드상 호환되나 미검증.\n- **Claude Code CLI**: `claude` 명령이 PATH에 있어야 메인\u002F추가 Claude 패널에서 자동 spawn 가능.\n- **EC2**: SSH 접속 가능한 인스턴스 + (선택) 진단 전용 키 설치를 위한 sudo 권한.\n\n---\n\n## 개발 셋업\n\n```sh\n# 1) 의존성 설치\nnpm install\n\n# 2) Rust + WebView2 등 Tauri 사전 요구사항 점검\nnpx @tauri-apps\u002Fcli info\n\n# 3) 개발 모드 실행 (vite dev + Rust 컴파일 + Tauri 윈도우)\nnpm run tauri dev\n```\n\n빠른 빌드 확인만 필요하면:\n\n```sh\nnpm run build      # tsc + vite 프론트엔드 빌드\ncargo check --manifest-path src-tauri\u002FCargo.toml\n```\n\n---\n\n## 빌드 (배포 산출물)\n\n```sh\nnpm run tauri build\n```\n\n산출물 위치 (Windows 기준):\n\n- `src-tauri\u002Ftarget\u002Frelease\u002Fsidabari.exe` — 단일 실행파일\n- `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002F` — MSI \u002F NSIS 인스톨러\n\n---\n\n## 프로젝트 구조\n\n```\nSidabari\u002F\n├── src\u002F                       # React 프론트엔드\n│   ├── components\u002F\n│   │   ├── layout\u002F            # MainLayout, MainToolbar\n│   │   ├── panels\u002F            # 4영역 패널 컴포넌트\n│   │   ├── terminal\u002F          # PtyTerminal, SshTerminal (xterm 래퍼)\n│   │   ├── modals\u002F            # SettingsModal, GateModal, DiagSetupModal\n│   │   ├── monitor\u002F           # HookBridge (Claude Code 훅 미러링)\n│   │   └── dashboard\u002F         # DiagnosticDashboard\n│   ├── lib\u002F                   # ssh, pty, config, parseDiagnostic 등 IPC 래퍼\n│   └── store\u002F                 # Zustand 전역 상태\n├── src-tauri\u002F                 # Rust 백엔드\n│   └── src\u002F\n│       ├── pty.rs             # 로컬 PTY (portable-pty)\n│       ├── ssh.rs             # SSH 셸 (russh)\n│       ├── ssh_exec.rs        # SSH exec \u002F 헤드리스 collect\n│       ├── sftp.rs            # SFTP 업로드 (sha256 검증)\n│       ├── build.rs           # 로컬 빌드 명령 spawn\n│       ├── config.rs          # 설정 load\u002Fsave (TOML)\n│       ├── hooks_bus.rs       # Claude Code 훅 IPC (events.jsonl + req\u002Fresp)\n│       ├── audit_log.rs       # SQLite 감사 로그\n│       ├── claude_safety.rs   # .claude\u002Fsettings.local.json deny 규칙\n│       ├── diag_setup.rs      # 원클릭 진단 키페어 + ForceCommand 셋업\n│       └── diag_ssh_allow.rs  # autoMode allow 패턴 등록\n├── docs\u002F\n│   └── ec2-diag-setup\u002F        # 서버 측 install.sh, sidabari-collect.sh\n├── branding\u002F\n│   └── sidabari-icon-source.png  # 아이콘 원본 (1024×1024)\n├── CLAUDE.md                  # 작업 절대 원칙 + 보안 가이드 + UI 가이드\n├── SIDABARI_SPEC.md           # 동작 사양서\n└── README.md\n```\n\n---\n\n## 설정\n\n- 위치 (OS 표준):\n  - Windows: `%APPDATA%\\sidabari\\sidabari.toml`\n  - macOS: `~\u002FLibrary\u002FApplication Support\u002Fsidabari\u002Fsidabari.toml`\n  - Linux: `~\u002F.config\u002Fsidabari\u002Fsidabari.toml`\n- 앱 내 [설정] 모달에서 편집 (탭: 일반 \u002F 서버 \u002F 빌드·배포 \u002F 모니터링 \u002F 시스템 진단).\n- **PEM 키는 경로만 저장** — 키 내용은 메모리에만 로드. 로그에 자격증명 안 찍힘.\n- 설정 변경 후 [재시작] 또는 자동 재시작 토글로 모든 Claude PTY 일괄 재시작 (`.claude\u002Fsettings.local.json` 즉시 반영).\n\n스키마 레퍼런스는 [SIDABARI_SPEC.md §5.2](SIDABARI_SPEC.md#52-설정-파일-스키마-참고), 코드는 `src-tauri\u002Fsrc\u002Fconfig.rs` \u002F `src\u002Flib\u002Fconfig.ts`.\n\n### 설정 모달 화면 (5개 탭)\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Cb>일반\u003C\u002Fb>\u003Cbr>앱 시작 시 claude 자동 실행, 훅 통합 설치, 호스트 IP 마스킹 등\u003Cbr>\u003Cimg src=\"docs\u002Fimages\u002FSetting00.jpg\" alt=\"일반 탭\" \u002F>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cb>서버 (SSH\u002FSFTP)\u003C\u002Fb>\u003Cbr>EC2 host\u002Fuser\u002F개인키 경로 + SFTP 업로드 디렉토리\u003Cbr>\u003Cimg src=\"docs\u002Fimages\u002FSetting01.jpg\" alt=\"서버 탭\" \u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Cb>빌드\u002F배포\u003C\u002Fb>\u003Cbr>빌드 명령·작업 디렉토리·jar 경로·타임아웃·배포 명령\u003Cbr>\u003Cimg src=\"docs\u002Fimages\u002FSetting02.jpg\" alt=\"빌드\u002F배포 탭\" \u002F>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cb>모니터링\u003C\u002Fb>\u003Cbr>로그 모니터 명령·ERROR 정규식·컨텍스트 N줄·캡처 지연\u003Cbr>\u003Cimg src=\"docs\u002Fimages\u002FSetting03.jpg\" alt=\"모니터링 탭\" \u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\" colspan=\"2\">\u003Cb>시스템 진단\u003C\u002Fb>\u003Cbr>진단 전용 키 + 서버 측 ForceCommand 셋업, Claude Code 권한 정책 (자동 허용 등록 \u002F 안전 규칙 deny 설치)\u003Cbr>\u003Cimg src=\"docs\u002Fimages\u002FSetting04.jpg\" alt=\"시스템 진단 탭\" width=\"50%\" \u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## EC2 진단 셋업 (선택)\n\n진단 전용 SSH 키 + 서버 측 `ForceCommand`로 잠근 채널을 만들면, Claude의 [시스템 데이터 수집] 명령이 자율적으로 SSH 접속해 진단 자료를 수집해도 시스템 변경이 **물리적으로 불가능**합니다.\n\n앱의 [설정] → [시스템 진단] → **[원클릭 진단 셋업]** 버튼으로 일괄 처리:\n\n1. 로컬에 `~\u002F.ssh\u002Fsidabari-diag` ed25519 키페어 생성\u002F재사용\n2. SFTP로 서버에 `install.sh` + `sidabari-collect.sh` 업로드\n3. 서버에서 sudoers \u002F sshd `Match User` \u002F `authorized_keys` `command=\"...\"` 자동 구성\n\n세부 동작은 [docs\u002Fec2-diag-setup\u002FREADME.md](docs\u002Fec2-diag-setup\u002FREADME.md) 참조.\n\n---\n\n## 보안 정책 요약\n\n- 자격증명\u002F키 파일 내용은 **메모리에만**, 로그·설정·DB에 안 들어감.\n- 사용자 입력을 셸 명령 문자열로 직접 조합하지 않음 (러시 구조화 API 사용).\n- SSH 호스트 키 TOFU 검증 (자동 수락 모드 X).\n- Tauri command 입력 검증 + 위험 도구 게이트 모달.\n- 감사 로그 (SQLite) 권한 `0600`.\n- 자세한 정책: [CLAUDE.md §1.2](CLAUDE.md#12-보안을-최우선으로).\n\n---\n\n## 문서\n\n| 문서 | 용도 |\n|------|------|\n| [SIDABARI_SPEC.md](SIDABARI_SPEC.md) | 동작 사양서 (워크플로우 \u002F UI \u002F 설정 스키마) |\n| [CLAUDE.md](CLAUDE.md) | 작업 규칙·보안 가이드·UI 스타일 가이드 (Claude Code 작업 시 1차 참조) |\n| [docs\u002Fec2-diag-setup\u002FREADME.md](docs\u002Fec2-diag-setup\u002FREADME.md) | EC2 진단 키 + ForceCommand 셋업 상세 |\n\n---\n\n## 상태\n\n- 1차 UI + 핵심 워크플로우 + Claude Code 훅 통합 + 진단 대시보드까지 구현 완료.\n- 프로젝트는 활발히 변경 중 — 사양서가 1차 참조, 이 README는 요약.\n\n---\n\n## 라이선스\n\nMIT License. [LICENSE](LICENSE) 파일 참조.\n\n이 프로젝트가 유용하셨다면 그대로 쓰셔도, 포크해서 본인 환경에 맞게 손보셔도, 상업적으로 활용하셔도 자유롭습니다. 다만 위험 가능성이 있는 도구(SSH\u002FSFTP\u002F원격 명령 실행)이므로 무보증(AS IS) 조항을 충분히 인지하고 사용해 주세요.\n","Sidabari 是一个专为单人使用的 Claude Code 编码自动化工具，旨在简化从代码编写到 AWS EC2 部署、诊断和修复的整个流程。其核心功能包括在一个界面中集成主要的 Claude Code、EC2 SSH 访问、系统诊断面板以及工具控制台，并支持构建、SFTP 上传、部署脚本执行、日志监控与错误自动检测等环节的自动化处理。技术上采用了 Tauri 构建桌面应用框架、Rust 语言保证性能与安全、React 开发用户界面，且所有代码由 Claude Code 自动生成维护。适用于那些使用 Claude Code 进行开发并需要频繁地在 AWS ECSC 上部署基于 JVM\u002FSpring Boot 等后端服务的开发者，尤其适合希望提高个人生产力的小团队或独立开发者。",2,"2026-06-11 03:31:51","CREATED_QUERY"]