{"id":50845174,"url":"https://github.com/bunhine0452/ocul-pm","last_synced_at":"2026-06-14T09:00:56.497Z","repository":{"id":363292247,"uuid":"1243505851","full_name":"bunhine0452/Ocul-PM","owner":"bunhine0452","description":"Local-first AI project manager (AI PM) for AI coding agents — auto-journals, verifies \u0026 organizes what Claude Code · Cursor · Gemini CLI do. 코딩 에이전트용 로컬-우선 AI PM · 작업 자동 기록·검증·정리.","archived":false,"fork":false,"pushed_at":"2026-06-08T09:20:58.000Z","size":11209,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T10:12:02.223Z","etag":null,"topics":["ai","ai-coding-agent","ai-pm","claude-code","coding-agent","cursor","desktop-app","dev-journal","developer-tools","gemini-cli","llm","local-first","macos","productivity","react","rust","semantic-search","tauri"],"latest_commit_sha":null,"homepage":"https://oculpm.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bunhine0452.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-19T12:03:28.000Z","updated_at":"2026-06-08T09:21:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bunhine0452/Ocul-PM","commit_stats":null,"previous_names":["bunhine0452/ocul-pm"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/bunhine0452/Ocul-PM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunhine0452%2FOcul-PM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunhine0452%2FOcul-PM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunhine0452%2FOcul-PM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunhine0452%2FOcul-PM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bunhine0452","download_url":"https://codeload.github.com/bunhine0452/Ocul-PM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunhine0452%2FOcul-PM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34315075,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-coding-agent","ai-pm","claude-code","coding-agent","cursor","desktop-app","dev-journal","developer-tools","gemini-cli","llm","local-first","macos","productivity","react","rust","semantic-search","tauri"],"created_at":"2026-06-14T09:00:33.314Z","updated_at":"2026-06-14T09:00:56.478Z","avatar_url":"https://github.com/bunhine0452.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/bunhine0452/Ocul-PM/main/landing/og.png\" alt=\"Ocul-PM — 코딩 에이전트용 AI 프로젝트 매니저\" width=\"460\" /\u003e\n\n\u003ch1\u003eOcul-PM\u003c/h1\u003e\n\n\u003cp\u003e\u003cb\u003e코딩 에이전트가 코드를 쓰는 동안, 당신은 기록·관리·검증만 합니다.\u003c/b\u003e\u003cbr/\u003e\nLocal-first \u003cb\u003eAI project manager (AI PM)\u003c/b\u003e for AI coding agents — Claude Code · Cursor · Gemini CLI.\u003c/p\u003e\n\n[![Latest release](https://img.shields.io/github/v/release/bunhine0452/Ocul-PM?color=12a06b\u0026label=%E2%AC%87%20download\u0026style=for-the-badge)](https://github.com/bunhine0452/Ocul-PM/releases/latest)\n[![Website](https://img.shields.io/badge/oculpm.com-12a06b?style=for-the-badge\u0026logo=vercel\u0026logoColor=white)](https://oculpm.com)\n\n[![Downloads](https://img.shields.io/github/downloads/bunhine0452/Ocul-PM/total?color=12a06b)](https://github.com/bunhine0452/Ocul-PM/releases)\n[![Platform](https://img.shields.io/badge/macOS-Apple%20Silicon-111?logo=apple)](https://github.com/bunhine0452/Ocul-PM/releases/latest)\n[![Built with Tauri 2](https://img.shields.io/badge/Tauri-2-24C8A0?logo=tauri\u0026logoColor=white)](https://tauri.app)\n[![Rust](https://img.shields.io/badge/Rust-000?logo=rust\u0026logoColor=white)](https://www.rust-lang.org)\n[![React 19](https://img.shields.io/badge/React-19-61DAFB?logo=react\u0026logoColor=black)](https://react.dev)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![Stars](https://img.shields.io/github/stars/bunhine0452/Ocul-PM?style=social)](https://github.com/bunhine0452/Ocul-PM/stargazers)\n\n**[🌐 oculpm.com](https://oculpm.com)** · **[⬇️ 다운로드](https://github.com/bunhine0452/Ocul-PM/releases/latest)** · **[📋 변경 이력](CHANGELOG.md)** · **[🐛 이슈](https://github.com/bunhine0452/Ocul-PM/issues)**\n\n\u003c/div\u003e\n\n---\n\n외부 AI 코딩 에이전트는 빠르지만, 며칠이 지나면 **무엇이 왜 바뀌었는지** 추적이 끊깁니다.\n어제 Claude 에게 시킨 리팩토링이 어떤 파일을 건드렸는지, Cursor 가 \"고쳤다\"는 코드가 실제로 도는지 — 매번 다시 확인해야 하죠.\n\n**Ocul-PM 은 이 간극을 메웁니다.** 에이전트가 코드를 쓰고, Ocul-PM 이 **그들이 한 일을 사람이 읽을 수 있는 기록으로** 남깁니다. 변경을 로컬 diff 로 즉시 검증하고, 오늘 무엇이 바뀌었는지 한눈에 보여줍니다. **클라우드도, 계정도, 텔레메트리도 없습니다.**\n\n\u003e AI 에게 빼앗긴 *\"내가 이걸 왜 만들었더라\"* 의 답을, 다시 손에 쥐는 도구.\n\n\u003cbr/\u003e\n\n## ✨ 핵심 기능\n\n| | |\n|---|---|\n| 📓 **자동 작업 일지** | 에이전트가 작업을 끝낼 때마다 규칙(`AGENTS.md`)에 따라 markdown 한 개를 남깁니다. 버그·기능·리팩토링·에러·잡일 — **5종 트리거 자동 분류.** 플랫 파일 SSOT, DB lock-in 없음, git 친화. |\n| 📊 **Today 일일 브리프** | 오늘 무엇이 바뀌고, 어제 무엇을 끝냈고, 다음은 무엇인지 — **워크데이 경계**로 정리. 새 작업이 기록되면 실시간 갱신. |\n| 🔍 **변경 diff (로컬)** | 에이전트가 \"수정했다\"는 모든 파일을 **네트워크 없이** 즉시 비교. 할루시네이션 1차 방어선. 일지별 diff 를 그 시점 그대로 영구 보관. |\n| 🧭 **시맨틱 코드 검색** | 의미(임베딩) · 심볼(AST) · 정확(텍스트) **3 모드.** `tree-sitter` + 로컬 임베딩 — **임베딩이 외부로 나가지 않습니다.** |\n| ⌨️ **내장 터미널** | `portable-pty` + `xterm.js` 풀스크린 터미널. 창 전환 없이 같은 앱에서 에이전트를 돌리며 일지가 쌓이는 걸 옆에서 봅니다. |\n| ✨ **멀티-LLM AI 패널** | Anthropic · OpenAI · Gemini 를 한 인터페이스로. API 키는 **OS 키체인에만** 저장. |\n| 🧩 **통합 Planner** | goal → 서브태스크 → journal entry 3단 위계로, AI 의 분 단위 작업을 사람의 주 단위 목표에 묶습니다. |\n\n\u003cbr/\u003e\n\n## ⬇️ 다운로드 / 설치\n\n**[→ 최신 릴리스에서 받기](https://github.com/bunhine0452/Ocul-PM/releases/latest)** — macOS (Apple Silicon)\n\n1. `Ocul-PM_x.y.z_aarch64.dmg` 를 받아 열고, **Ocul-PM** 을 `Applications` 로 드래그합니다.\n2. 처음 열 때 **\"손상되었기 때문에 열 수 없습니다\"** 가 뜨면 — 공증(notarization) 전 빌드라 macOS 가 격리 표시를 붙인 것입니다(실제 손상 아님). 터미널에 한 줄:\n\n   ```bash\n   xattr -dr com.apple.quarantine /Applications/Ocul-PM.app\n   ```\n\n\u003e 🔄 한 번 설치하면 다음 버전부터는 **앱 안에서 자동 업데이트**됩니다.\n\u003e 첫 의미 검색/인덱싱 때 임베딩 모델(~135MB)을 1회 자동으로 내려받습니다(이후 오프라인).\n\n\u003cbr/\u003e\n\n## 🔭 이렇게 동작해요\n\n```\n1. 프로젝트 폴더 추가        →  Ocul-PM 이 에이전트용 규칙(AGENTS.md)을 심습니다\n2. 평소처럼 에이전트로 코딩   →  규칙에 따라 에이전트가 작업 일지를 남깁니다\n3. 자동으로 기록·정리        →  일지·변경 diff·통계가 Today 화면에 실시간으로 모입니다\n```\n\n\u003cbr/\u003e\n\n## 🧱 기술 스택\n\n**네이티브 데스크톱 앱입니다. Electron 이 아닙니다.**\n\n| 계층 | 기술 |\n|---|---|\n| 셸 | [Tauri 2](https://tauri.app) — Rust 백엔드 + 시스템 웹뷰 |\n| 백엔드 | Rust 2021 · `tokio` · `rusqlite` · `sqlite-vec` |\n| 코드 분석 | `tree-sitter` (Rust/TS/JS/Py/Go) · `fastembed` (로컬 임베딩) · `blake3` |\n| 터미널 / 보안 | `portable-pty` · `xterm.js` · `keyring` (네이티브 키체인) · `rustls` |\n| 프론트엔드 | React 19 · TypeScript 5.8 · Vite 7 · Tailwind 4 |\n\n전체 데이터는 프로젝트의 **`.oculpm/` 디렉토리 + 로컬 SQLite** 에 머뭅니다. 외부로 나가는 건 — 당신이 직접 호출한 LLM API 와 새 버전 확인, 그것뿐입니다.\n\n\u003cbr/\u003e\n\n## 🔒 왜 로컬-우선인가\n\n- **소유권** — 일지는 markdown 파일. 앱이 망해도 데이터는 그대로. `git clone` 으로 옮기면 그대로 동작합니다.\n- **개인 정보** — 코드·임베딩·작업 기록 어느 것도 우리 서버로 가지 않습니다. **우리 서버가 없기 때문입니다.**\n- **속도** — 콜드 스타트 1.5초 미만. 검색은 디스크 I/O 가 한계.\n- **오프라인** — LLM 호출을 빼면 전부 오프라인.\n\n\u003cbr/\u003e\n\n## 🗺️ 로드맵\n\n- [x] macOS (Apple Silicon) 빌드 + 인앱 자동 업데이트\n- [ ] macOS (Intel) · **Windows** 빌드\n- [ ] 팀 클라우드 동기화 (옵트인)\n- [ ] Apple 공증(notarization)\n\n\u003cbr/\u003e\n\n## 🛠️ 소스에서 빌드\n\n```bash\ngit clone https://github.com/bunhine0452/Ocul-PM\ncd Ocul-PM\npnpm install\npnpm tauri dev      # 개발 실행\npnpm tauri build    # 배포 번들 (.dmg / .app)\n```\n\n요구사항: Node 18+ · pnpm · Rust (stable) · (macOS) Xcode Command Line Tools.\n\n\u003cbr/\u003e\n\n## ⭐ 응원하기\n\n이 도구가 마음에 든다면 **[Star](https://github.com/bunhine0452/Ocul-PM/stargazers) 한 번**이 큰 힘이 됩니다.\n버그·아이디어는 [이슈](https://github.com/bunhine0452/Ocul-PM/issues)로, 개선은 PR 로 언제든 환영합니다.\n\n## 📄 라이선스\n\n[MIT](LICENSE) © 2026 Kim Hyunbin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbunhine0452%2Focul-pm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbunhine0452%2Focul-pm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbunhine0452%2Focul-pm/lists"}