Claude Code 가 작업을 끝내면 Ocul-PM 에 일지가 남고, 다음 대화는 그 일지와 남은 계획을 시작 컨텍스트로 받아 이어서 합니다. 변경은 로컬 diff 로 보고, 쌓인 기록은 스탠드업이 됩니다. 로컬-우선. 계정도, 서버도, 텔레메트리도 없습니다.
베타 Windows x64 Linux AppImage Linux .deb
매일 AI 로 개발하는 사람을 위한 앱입니다 · Claude Code 사용자는 플러그인 두 줄로도 시작할 수 있습니다
평소 쓰는 프로젝트에서 그대로 해 보세요. 이 왕복이 되면 이 앱은 제 몫을 한 것입니다.
터미널의 Claude Code 에 평소 하던 대로. 프로젝트를 추가하면 AGENTS.md 가 심어지고, 플러그인 두 줄이면 훅과 기록 도구까지 붙습니다.
작업이 끝나면 에이전트가 일지를 남기고, 오늘 화면의 「첫 기록」 카드가 그 대화의 첫 일지를 확인해 줍니다 — 총 일지 수가 아니라 대화 id 로. 기록이 남았다는 뜻이지 코드가 검증됐다는 뜻은 아닙니다.
다음 날 새 대화를 열면 훅이 남은 계획과 마지막 일지 3건을 시작 컨텍스트에 싣습니다. 「이어하기」 카드가 무엇이 어느 대화에 실렸는지 보여 주고, 버튼 하나가 그 자료를 터미널에 넘깁니다. 어제를 다시 설명하지 않습니다.
확인한 경로는 터미널의 Claude Code + oculpm 플러그인입니다. Codex · Cursor · Gemini CLI 는 규칙 파일로 1 · 2 단계가 되고, 3 단계의 훅은 아직 Claude Code 뿐입니다.
코드는 그 어느 때보다 빨라졌는데, 오늘 아침 새 대화의 첫 10분은 어제를 다시 설명하는 데 씁니다. 속도를 얻고 기억을 잃는 것 — 에이전트 시대의 트레이드오프를 Ocul-PM 이 끊습니다.
에이전트의 모든 작업을 스스로 적는 기록장. 모든 변경을 그 자리에서 보여 주는 검증대. 그리고 에이전트 그 자체를 품은 콘솔.
에이전트가 일을 마치는 순간, 일지는 이미 쓰여 있습니다. 무엇을 왜 고쳤는지, 어느 에이전트가 어느 모델로 했는지 — 버그·기능·리팩토링·에러·잡일로 분류되어, 사람이 읽는 마크다운으로.
에이전트가 만졌다는 파일 — 커밋하기 전에, 앱 안에서 로컬 diff 로 확인합니다. 일지와 나란히 붙여 놓고 "말한 것"과 "실제로 바뀐 것"을 봅니다.
진짜 Claude Code 가 앱 안에서 구동됩니다. 파일을 읽고, 고치고, 명령을 돌리는 매 단계가 카드로 흐르고 — v2.11 부터 고치는 내용(diff)이 그대로 보입니다.
터미널 하이퍼링크와 편집기 URL 이 웹뷰의 막힌 기본 동작에 걸려 조용히 죽던 것. 밖으로 나가는 링크는 한 통로로 모읍니다.
음절 확정마다 나던 지움+재전송 왕복을 없앴습니다. 트레이스 150건을 전수 집계해 글자 유실은 없었다고 먼저 확인했습니다.
지운 프로젝트의 탭·터미널 창을 행 삭제 전에 닫습니다. 재구축을 기다리느라 앱이 몇 초 굳던 것도 뒤로 뺐습니다.
총 일지 수가 아니라 대화 id 로 판정합니다. 준비 → 진행 중 → 첫 일지 → 기록 없이 끝남 → 귀속 불명. 기록 ≠ 검증이라고 카드가 말합니다.
SessionStart 훅이 계획 뒤에 마지막 일지 3건을 싣고 원장에 남깁니다. 카드는 어느 대화에 포함됐는지까지 — 참조 여부는 모른다고 적습니다.
journal_search 가 캐시와 관련도 랭킹으로 132→25ms. 관련 후보를 1클릭으로 잇고, 태그를 정리하고, 주간 요약 층을 먼저 봅니다.
도구 호출이 우리 말 15가지로 그려집니다. 읽기·고치기는 한 줄로 접히고 승인 대기·오류·기록은 안 접힙니다. 펼치면 원본이 맨 아래 있습니다.
커밋·일지·계획·바뀐 파일을 한 좌표로 묶고 기록률과 아직 일지 없는 변경을 보여 줍니다. 새로 저장하는 것 없이 있는 git 을 읽습니다.
Claude Code·Codex 가 「에이전트」 한 줄로 모이고 논의·문서는 참고로. ⌘번호가 다시 매겨지고 바뀐 것은 한 번 알려 줍니다.
훅은 대화마다 다른 id 를 들고 옵니다. 작업 세션이 참여한 대화를 전부 기록하고, 일지가 어느 대화의 것인지 적습니다.
세션마다 색을 고르면 왼쪽 띠와 터미널 테두리가 함께 뭅니다. 카드는 2/4 실행 중 이라 말하고 접어도 그 수가 남습니다.
파일을 끌어 옮기고(접힌 폴더는 머물면 열립니다) 여럿을 함께 잡습니다. 이름을 바꾸면 열린 탭과 미저장 편집이 따라옵니다.
셸을 쥔 프로세스와 만나는 자리가 움직이지 않습니다. 앱이 옛 자리에 살아 있는 프로세스를 그대로 이어받습니다 — 갈아치우지 않습니다.
앱이 그 프로세스에게 「내려가라」고 말하는 자리를 전부 없앴습니다. 아무도 안 붙은 셸의 유예는 3시간 하나뿐입니다.
대화마다 id 가 섭니다. 누르면 전체가 복사돼 claude --resume 로 같은 대화를 터미널에서 그대로 엽니다.
저장할 때마다, 에이전트가 고칠 때마다 판이 남습니다. 경로 줄의 시계에서 골라 겹쳐 보거나 되돌립니다 — git 이 아니라 .oculpm/ 안입니다.
파일을 하나씩 열어 보지 않아도 프로젝트 전체 진단이 파일별로 섭니다. 빈 상태는 「문제 없음」이 아니라 「아직 아는 문제 없음」입니다.
한 번 누른 파일은 기울임 탭 한 자리를 돌려 쓰고 첫 편집에 고정됩니다. ⇧⌘O·⌃G 로 심볼과 줄로 바로 뜁니다.
내보낸 대화 파일에서 이 프로젝트 것만 골라 일지로. 목록을 훑는 것까지는 전부 오프라인·무과금입니다.
규칙·스킬·자동화를 YAML 한 장으로. 남의 문서는 무엇이 달라지는지 먼저 보여 준 뒤 적용합니다.
폴백이 답하면 배지가 붙고, 못 닿는 모델은 사라지지 않고 흐려지며, 자동화는 실패가 아니라 연기됩니다.
질문마다 계획·일지·규칙을 통째로 다시 싣던 것을 멈췄습니다. 목록만 한 번, 본문은 필요할 때.
「지난주에 뭐 했지」에는 붙고, 이름 짓기 질문에는 안 붙습니다. 판정에 AI 를 부르지 않습니다.
2,500자 절단이 한 번은 「시크릿 금지」를 삼켰습니다. 이제 세 줄만 상주하고 나머지는 전문으로 옵니다.
박힌 다섯 벌이 전부였습니다. 이제 만들고 .json 으로 주고받습니다 — 내장도 같은 형식이라 내장이 곧 예제입니다.
미리보기 상자가 없습니다. 색 하나를 바꾸면 그 순간 앱 전체가 바뀝니다. 바꾸지 않은 색은 건드리지 않습니다.
프로젝트에 테마를 묶으면 그 창만 그 색입니다. 저장소를 여럿 열어 두고 헷갈리던 것을 색이 가릅니다.
폴더를 감시하다 변경이 멎으면 그때 한 일을 일지 초안으로 남깁니다. 얼마나 기다릴지는 여섯 단계 — 0.2초부터 10분까지.
직접 · 에이전트 · 자동 초안 · 스케줄 · 감시 · MCP — 일지마다 출처가 붙습니다. 한 종류뿐인 목록에서는 필터 줄이 스스로 사라집니다.
최근 7일 실제 발동과 한 번도 안 걸린 규칙. 정성껏 써 둔 규칙이 조용히 아무 일도 안 하는 것은 눈으로 안 보입니다.
여러 개를 돌려 두면 어느 창이 내 대답을 기다리는지 하나씩 눌러 봐야 했습니다. 이제 그 세션이 노랗게 서고 「N개가 기다립니다」로 바로 갑니다.
명령마다 상태 막대가 서고 실패 지점이 오른쪽 띠에 점으로 찍힙니다. ⌘↑/⌘↓ 로 건너뛰고, 긴 출력에도 어느 명령인지 위에 고정됩니다.
블록을 누르면 「일지로 남기기」·「플래너에 붙이기」. 명령·종료코드·걸린 시간·출력 끝부분이 미리 채워진 채 열립니다.
화면 이동은 물론 일지·계획·토의·문서를 제목으로 검색해 바로 엽니다. diff 검토도 계획 토글도 키보드로 끝납니다.
한 창이 프로젝트 여럿을 크롬식 탭으로 뭅니다. 떼어내 새 창으로, 다른 창에 떨어뜨려 다시 합치기까지 — 우클릭 메뉴로도 됩니다. 터미널 세션은 끊기지 않습니다.
「매주 금 17시에 이번 주를 요약해라」를 걸어 두면 앱이 그 시각에 돌립니다. 안 돈 이유까지 기록에 남고, 꺼져 있었으면 딱 한 번만 따라잡습니다.
앱 없이도 시작할 수 있습니다 — 훅 브리지 · MCP 도구 7종 · 스킬 5종이 두 줄로 설치됩니다.
세션 상태 아이콘과 팝오버 브리핑 — 앱을 열지 않아도 새 일지가 도착한 것을 압니다.
UI 는 한국어·영어 중 고르고, AI 가 쓰는 일지의 언어는 따로 정합니다.
타이핑 중 완성이 뜨고 틀린 곳에 밑줄이 그어집니다. 호버 타입 · 정의로 이동 · 이름 바꾸기 · 코드 액션까지 — 표준 LSP.
Rust · TypeScript · Python · Go. PATH 에 있으면 붙고, 없으면 없다고 말합니다 — 조용히 실패하지 않습니다.
.oculpm/ · .github/ · .gitignore — 정작 가장 자주 여는 것들이 보입니다.
탭으로 여러 파일, 좌우 분할로 두 파일을 같이. 만들기·이름 바꾸기·드래그 이동, 삭제는 휴지통으로. Finder 에서 끌어다 놓거나 ⌘V 로 넣습니다.
줄 옆을 눌러 중단점, 멈춘 곳의 호출 스택과 변수를 펼쳐 봅니다. Rust · Python · Go.
항목마다 「30일 N회」 / 「안 걸림」, 세션당 주입 KB. Claude Code 대화 기록을 이 컴퓨터 안에서 셉니다 — LLM 0 · 네트워크 0.
커밋 이후 변경이 편집기 안에 겹쳐 보이고, 이 파일을 고친 작업 일지로 바로 건너뜁니다.
파일 트리에서 열어 문법 하이라이트와 함께 바로 고치고 ⌘S 로 저장합니다. 12개 언어, 테마도 앱을 따라갑니다.
같은 파일을 에이전트가 고치면 덮어쓰지 않고 배너로 묻습니다. 저장 안 한 편집은 화면을 옮겨도 남습니다.
검색 결과·코드 맵의 버튼 하나로 그 파일 그 줄이 앱 안에서 바로 열립니다.
스크린샷을 보려고 Finder 로 나가지 않습니다. 체크무늬 위에 창 맞춤 ↔ 실제 크기, PDF 는 문서 그대로 — 16MB 까지.
색인이 아니라 디스크의 지금 내용을 찾습니다. 대소문자·단어·정규식, 그리고 한 곳·한 파일·전체 치환까지.
Today 활동 링이 「일지 N건 · 파일 N개 · +N/−N 줄」로 읽힙니다. 마우스가 스칠 때마다 떠들던 말풍선은 조용해졌습니다.
사이드바에 오늘 일지·활성 플랜. 에이전트가 쓰면 1초 안에 뜨고, 체크박스는 앱의 oculpm-mcp 를 거쳐 .md 에 반영됩니다. Copilot 도 같은 도구를 봅니다.
확인 표시는 그때 본문의 지문과 함께 남습니다. 에이전트가 뒤에 고치면 「확인 뒤 변경됨 · 다시 검토」가 서고, 「검증됨만」 필터에서 빠집니다. 다시 읽고 누르면 지금 내용에 묶입니다.
이 앱은 자기 자신으로 개발됩니다 — 아래 이력 전부가 Ocul-PM 의 작업 일지에서 나왔습니다.
.claude/settings.json 훅과 .mcp.json 서버를 그대로 실행하는데, 터미널의 CLI 와 달리 폴더를 믿는지 묻지 않았습니다. 이제 「이 프로젝트를 신뢰할까요?」 를 먼저 묻고 실행될 수 있는 설정 파일을 보여 줍니다(언어 서버와 같은 신뢰라 v3.10 에서 켠 프로젝트는 그대로). 오늘 · 변경 화면의 자동 git 이 .git/config 의 fsmonitor · 필터 · 외부 diff 와 훅을 따르던 것, 플러그인 설치가 미리 본 것과 다른 번들을 받을 수 있던 것, 휴대폰 연결로 .env 를 읽던 길도 막았습니다. 창을 열 때 이미 일어난 일을 놓치지 않습니다 — 이미 돌던 세션 · 탭의 바쁜 점 · 자동화 「실행 중」 · 언어 서버 상태가 새 창에서 틀리게 보이던 것을 고쳤고, 탭을 닫거나 앱을 끄면 언어 서버와 디버거도 내립니다. 데이터베이스를 못 열면 설명 없이 꺼지는 대신 이유를 보이고 「새로 시작」 을 묻습니다..rs · .ts · .py · .go 파일을 열면 편집기 아래 상태줄에 「언어 서버 꺼짐 · 신뢰하고 켜기」 가 서고, 한 번 누르면 켜집니다.build.rs · 매크로와 그 저장소가 고른 툴체인을 실행해서, 남의 저장소에서 파일 하나를 여는 것만으로 그 코드가 돌 수 있었습니다. 이제 언어 서버는 이 기기에서 프로젝트를 신뢰한 뒤에만 뜹니다(상태줄 「신뢰하고 켜기」, 설정에서 거두기). AI 패널이 근거로 싣는 코드 조각도 보내기 전에 가리고, .env · 키 · 자격 증명 파일은 .gitignore 와 상관없이 색인하지 않으며, 앱이 꺼진 사이 지운 파일은 켤 때 색인에서 걷습니다. 배경 자동화의 허락은 그때 본 스위치 · 지시문에 묶여 나중에 바뀌면 다시 묻습니다. 그리고 논의 편집기를 다시 만들었습니다 — 쓰는 동안 자동완성이 뜨지 않고, 넓은 창에서 문장이 잘려 보이던 것 · 다른 화면에 다녀오면 초안이 사라지던 것을 고쳤으며, 가운데 칼럼 · 섹션 개요 · 상태줄 · 섹션 단위 나란히 보기를 갖췄습니다..oculpm/ 안과 편집기 저장뿐이었습니다. 두 번째 외부 리뷰가 그 빈자리를 짚었고, 다시 훑자 더 큰 자리가 나왔습니다 — 프로젝트를 열 때마다 맞춰 쓰는 규칙 파일과 .gitignore 가 링크면 그 대상의 내용이 프로젝트로 복사되거나(AGENTS.md → ~/.zshrc) 홈의 전역 Claude 지침에 써졌습니다(.claude → ~/.claude). 이제 링크인 자리는 건드리지 않고 이유를 보여 주며, 외부 편집기 · 미리보기 · 변경 화면 · 색인 · 로컬 히스토리도 링크를 끝까지 풀어 확인합니다. 마스킹이 꺼지던 길 둘(깨진 설정 파일 · 릴리스 노트 초안의 CHANGELOG 표본)도 막았습니다. 그리고 화면 머리가 작아졌습니다 — 높이 52 → 44px, 제목 17 → 14px, 판 모서리 20 → 12px. 편집기 우클릭 메뉴 · 자동완성이 편집면보다 크게 뜨던 것도 바로잡았습니다..env 꼴 비밀 줄을 늘 가리고, 배경 모델에 보내기 전에도 가립니다. 저장소에 심어 둔 심볼릭 링크가 저장을 프로젝트 밖으로 돌리던 길도 막았습니다. 앱 화면에 CSP를 켰습니다 — 앱에 든 파일만 실행하고 원격 이미지를 불러오지 않으며, 릴리스마다 Windows·Linux 실제 앱으로 모든 화면의 위반 0건과 정책이 걸려 있는지를 확인합니다. 그 밖에 어댑터는 버전·해시가 고정된 목록대로만 설치하고, 위험한 권한 모드는 한 번 더 묻고, 플러그인 미리보기가 MCP 서버가 실행할 명령을 보여 주고, Notion 연결이 브라우저 기록에 토큰을 남기지 않습니다.{#…} 가 id 를 가로챔 · 앵커 단계에 항목을 더하면 단계가 하나 더 생김 · 단계 이름 「결정」 으로 결정 섹션이 지워질 수 있던 길)을 고쳤고, Claude Code · Codex 어댑터를 올렸습니다(0.81.0 · 1.13.0).gh·에이전트 TUI 가 내는 것)와 편집기 본문의 URL 을 ⌘클릭하면 브라우저가 열리는 대신 아무 일도 일어나지 않았습니다 — 웹뷰에서 막히는 브라우저 기본 동작에 걸려 있었고, 편집기 쪽은 로그조차 남지 않았습니다. 이제 밖으로 나가는 링크는 전부 한 통로로 모입니다. 한글을 칠 때마다 터미널이 지웠다 다시 쓰고 있었습니다 — 음절 확정마다 지움 문자와 같은 글자의 재전송이 났고, 그 왕복이 진단을 정상 입력마다 울려 로그를 주 4MB 채웠습니다(트레이스 150건 전수 집계로 글자 유실은 없음을 확인). 프로젝트를 지워도 흔적이 창에 남던 것 — 지운 프로젝트의 탭이 번호로 남아 누르면 실패했고, 삭제가 데이터베이스 재구축을 기다려 앱이 몇 초 굳었습니다. 그 밖에 확인 대화상자 리디자인(Enter 가 곧 확인), 시작 탭에서 연 설정 네 곳의 크래시, 프로젝트 밖을 가리키는 심볼릭 링크가 트리에서 평범한 파일로 보이던 것.journal_search 가 SQLite 캐시와 관련도 랭킹으로(132→25ms), 검색 화면 「일지」 스코프, 관련 후보 제안과 1클릭 잇기, 태그 사전·정리 시트, 주간 요약 층, 핫스팟·속도 카드, 미검토 대기함, 계획 로그 분리. 그 밖에 숨은 프로젝트 탭으로 새던 터미널 ⌘D 와 새 일지 토스트의 「열기」.plan_create 는 제목·id 가 겹치는 활성 계획이 있으면 만들지 않고 그 id·제목·hash 를 돌려줘 항목을 더하도록 권합니다(allow_similar 로 통과). 그 밖에 오늘 화면 머리글의 조사 공백, git 저장소가 아닌 프로젝트의 브랜치 화면이 오류 카드였던 것, 검색 빈 상태의 아이콘·제목.files_touched, 브랜치 화면의 파일 귀속, 일지 변경 diff 캡처(감싼 머리글을 못 알아봐 그 파일의 diff 가 빠졌습니다)가 전부 실제 파일명으로 돌아옵니다. 손으로 고친 config.toml 에 키 하나가 빠지면 프로젝트가 통째로 무효가 되던 것은 빠진 값을 기본값으로 채워 넘어갑니다. 그 밖에 비밀 마스킹이 겹치는 매치의 꼬리를 남기던 것, 비ASCII 세션 id 에 색인이 멎던 것, 설정 화면이 열 때마다 config 를 되쓰던 것, 늦은 응답이 새 화면을 덮던 것, 메뉴바 팝오버의 부분 실패·정렬, 탭 × 두 번 누름 — 열일곱 건..oculpm/index/ 를 다시 만들었습니다. 루트가 사라지면 이벤트를 버리고 아무것도 다시 만들지 않습니다.«) 뒤로 간 것도 아니고 그냥 없었습니다. macOS 27 은 상태 아이템을 프로세스의 기동 시점 신원에 묶는데, 이 앱은 메모리 튜닝(유휴 645MB → 38MB)을 걸려고 기동 직후 자기 자신을 다시 띄우고 있어 「아까 그 앱」으로 인정받지 못했습니다. 같은 튜닝을 번들이 프로세스 생성 시점에 넣어 주도록 바꿔 다시 띄우지 않고, 아이콘은 제자리입니다. Claude Code 어댑터는 0.77.0.oculpm.ocul-pm 이 사이드바에 오늘 일지와 활성 플랜을 띄우고, 에이전트가 일지를 쓰면 1초 안에 거기 뜹니다. 플랜 항목 체크박스를 누르면 .md 가 바뀌고 앱 플래너가 같이 바뀌는데, 파일은 확장이 직접 고치지 않고 앱에 든 oculpm-mcp 를 통해서만 써서 잠금·갱신 로그·동시 편집 보호가 그대로입니다. Copilot 에이전트 모드에는 journal_write·plan_update 도구가 그대로 보이고, 일지의 「편집기로 열기」는 VS Code 사이드바의 그 일지로, VS Code 의 「Ocul-PM 에서 열기」는 앱의 그 일지로 갑니다(oculpm://open 이 버리던 entry 를 이제 씁니다). 설정 > 통합에 「VS Code 확장」 행이 서고, 마켓 링크 둘(VS Code 마켓플레이스 · Open VSX)이 브라우저 위임으로 연결 목록에 올랐습니다. 확장은 VS Code 1.101 이상, 앱 없이는 읽기 전용, 네트워크를 쓰지 않습니다..oculpm/retro/*.md 는 지우지 않습니다. 그리고 화면마다 반 단씩 어긋나 있던 글자·여백·곡률 약 1,900곳, 설정 여는 길 셋, 말투 700곳을 한 벌로 모았습니다./Applications 앞으로 적히는데 요청은 사라진 쪽에서 와 매칭될 수 없었습니다. 이제 터미널을 하나도 쥐고 있지 않은 옛 프로세스는 앱이 붙을 때 조용히 갈아 치웁니다 — 돌고 있는 셸이 하나라도 있으면 손대지 않습니다.oculpm 명령이 모르는 낱말을 받으면(설정에 남은 옛 줄 하나, 오타 하나면 충분했습니다) 명령 대신 앱을 통째로 실행했고, 부른 쪽이 몇 초 뒤 타임아웃으로 죽이면 창도 함께 사라졌습니다. 이제 그 이름으로 불린 호출은 낱말이 무엇이든 명령으로 끝나고, 모르는 낱말에는 창 대신 사용법을 돌려줍니다. 경로를 앞에 적은 --project 가 조용히 무시되던 것도 함께 고쳤습니다..dmg 를 열면 macOS 가 「손상되었기 때문에 열 수 없습니다」라고 막았고, 실제 손상이 아니라 격리 표시일 뿐인데 xattr -dr com.apple.quarantine 한 줄을 직접 쳐야 풀렸습니다. 이제 Apple Developer ID 서명 + 공증(notarization) 을 마친 빌드가 나갑니다. 스킬이 언제 걸리는지를 앱이 답합니다 — 지금까지 답은 스킬이 스스로 쓴 소개 한 줄이었는데, 상세가 「언제 걸리나」를 본문보다 먼저 말하고 실제로 걸렸을 때 어떤 말이 그걸 불렀는지까지 원장이 인용합니다. 작업 일지 감시의 「끄기」는 60초짜리 거짓말이었습니다 — 감독관이 워처 없는 프로젝트를 먹통으로 보고 되살렸기 때문입니다. 이제 사용자가 멈춘 것과 죽은 것을 구별하고 수명까지 화면이 말합니다. 오늘 화면의 「변경된 파일」이 파일 수가 아니라 손댄 횟수를 세어 최대 105% 부풀어 있었고, 활동 링은 눈금이 아니라 벽이라 최근 26일 중 22일이 상한에 붙어 구별되지 않았습니다 — 둘 다 고치고 「지금 하는 일」을 새로 넣었습니다(모를 때는 지어내지 않습니다). 미완 항목이 남은 계획은 완료로 닫히지 않습니다. 보이지 않는 곳으로는 target/ 에 5,000개가 쏟아져도 감시 큐에 1건만 남고, 프로젝트를 닫을 때 최대 4.3초 멈추던 잠금을 풀었고, 첫 화면이 26.5KB 가벼워졌습니다(−9.2%).oculpm:// 딥링크는 웹페이지의 링크 한 줄로 일어날 수 있는 일이었고, 「프로젝트 개요」는 이 저장소에서 마침 1바이트 차이로 비켜가 있었습니다. 딥링크·Notion 연동·「정의로 이동」·개요가 같은 코드를 복사해 쓰고 있었고 이제 한 자리로 모였습니다. 설치 마법사에서 ESC 로 닫으면 그때까지 쓴 것이 사라졌습니다 — 닫기는 초안을 저장하는데 ESC 만은 화면이 처음 열렸을 때의 빈 초안을 저장하고 있었습니다. 오늘 화면의 활동 링이 바쁜 날마다 똑같은 모양이던 것도 고쳤습니다: 둥근 획 끝이 넘겨 칠하는 만큼을 셈에 넣지 않아 안쪽 링이 102% 를 칠했고, 줄 변화 7,500 을 넘는 날은 전부 닫힌 원이었습니다 — 이제 반지름마다 각각 잘려 포화한 날에도 함께 멈춘 동심원 셋으로 읽힙니다. AI 패널의 첫 글자는 계획·일지를 한꺼번에 읽어 오면서 빨라졌습니다(메시지마다 최대 여덟 왕복이 줄줄이 이어지던 것). 보이지 않는 곳으로는 Notion 연결의 일회용 확인 값을 진짜 난수로, 플러그인 설치가 심볼릭 링크를 타고 폴더 밖에 쓰던 것을 차단, 웹뷰의 「아무 경로나 열기」 권한 제거..oculpm/ 안 · .env* 제외 · 파일당 50판). 함께 — svg 를 코드 옆에서 저장 전 버퍼 기준으로 그림으로 보고, 터미널은 프롬프트에 멈춘 셸을 「실행 중」으로 읽던 것과 업데이트를 넘어 살아남은 옛 프로세스가 옛 답을 계속 돌려주던 것, 그 프로세스가 아무도 붙지 않은 채 셸을 쥐고 남던 것을 고쳤습니다./rules·/plan·/journal·/skill 로 직접 밀어 넣을 수도 있습니다). 자주 쓰인 기록은 관련도가 오르고 안 쓰이면 30일 반감기로 흐려집니다. 설정에는 컨텍스트 탭이 생겨 항상 따라가는 지시(전역·프로젝트별)·이번 대화가 받는 목록 원문·마지막 회상 예산·관련도 순 후보(개별 「잊기」)를 보여 줍니다..json 으로 내보내고 가져옵니다 — 내장 다섯 벌도 같은 형식이라 「복제해서 편집」으로 바로 출발합니다. 별도의 미리보기 상자는 없습니다: 색을 하나 바꾸면 그 순간 앱 전체가 그 색이 되고, 바꾸지 않은 색은 건드리지 않습니다(배경만 다섯 줄 적은 테마도 온전한 테마입니다). 강조 계열을 하나도 지정하지 않은 테마는 고른 강조색을 그대로 두고, macOS 라면 「시스템 강조색 따르기」로 OS 색을 그대로 입힙니다. 프로젝트 편집에서 테마를 묶으면 그 프로젝트를 보고 있는 창만 그 색으로 그려집니다 — 저장소를 여럿 열어 두고 어디 있는지 헷갈리던 것을 색이 해결합니다. 가져온 파일은 원래 식별자를 버리고 새로 발급받고, 이름이 겹치면 묻습니다(덮어쓸지 · 사본으로 둘지). 테마가 칠할 수 있는 것은 정해진 색 목록뿐이라 파일에 다른 무엇이 적혀 있어도 화면에 새지 않습니다..oculpm/·AGENTS.md 규칙·.gitignore)을 첫 화면이 설명하고 커밋을 권합니다. 설정 → 진단에 닥터 아홉 줄(감시·잠금·어댑터·API 키·색인·셸 통합·훅·MCP)이 서고 문제는 그 자리에서 고칩니다. 명령이 도는 터미널이나 대답 중인 에이전트가 있는 탭은 닫기 전에 한 번 물어봅니다. 색인이 없는 프로젝트에서 검색·코드 맵이 「결과 없음」 대신 「색인 없음 + 만들기」라고 말하고, ⌘/ 로 단축키 전체를 봅니다. 첫 화면 코드 덩어리는 538KB → 268KB, 하루치 요약 왕복은 Today 17→5·일지 30→4 로 줄었습니다.git init 을 안 한 프로젝트에서 node_modules 가 색인되고 압축 파일 한 줄이 수백 번 복제돼 DB 가 558MB 까지 부풀던 것을 걷어내고(실측 382MB), 설정 → 진단에 용량과 「압축」이 생겼습니다. 터미널을 닫으면 vim·ssh·claude 까지 진짜로 끝나고 앱을 꺼도 어댑터가 고아로 남지 않습니다. 일지 상세의 「검증」 토글과 관련 일지 칩으로 검토 고리가 닫힙니다.전부 당신 프로젝트의 폴더 하나에 있습니다 — 사람이 읽는 마크다운으로.
앱을 지워도 기억은 남습니다. 당신의 것이니까요.
매일 AI 코딩 에이전트로 개발하고, 다음 날 새 대화에 어제 맥락을 다시 설명하는 게 귀찮은 사람입니다. Claude Code 가 작업을 끝내면 일지가 남고, 다음 대화는 그 일지와 남은 계획을 시작 컨텍스트로 이어받습니다 — 위 왕복 하나가 그것입니다. 어쩌다 한 번 쓰는 사람에게는 이 왕복이 필요 없을 수 있고, 그래도 괜찮습니다 — 앱은 무료이고 데이터는 프로젝트 폴더의 마크다운이라 언제든 그만둘 수 있습니다.
v2.48.0 부터 VS Code 확장 oculpm.ocul-pm 이 있습니다. 편집기는 진짜 VS Code 를 쓰고, 확장은 그 사이드바에 오늘 일지와 활성 플랜을 띄웁니다 — 에이전트가 일지를 쓰면 1초 안에 뜨고, 플랜 항목 체크박스를 누르면 .md 와 앱 플래너가 같이 바뀝니다. 파일은 확장이 직접 고치지 않고 앱에 든 oculpm-mcp 를 통해서만 써서 잠금·갱신 로그·동시 편집 보호가 그대로입니다. Copilot 에이전트 모드에는 journal_write·plan_update 도구가 그대로 보이고, 일지의 「편집기로 열기」는 VS Code 사이드바의 그 일지로, VS Code 의 「Ocul-PM 에서 열기」는 앱의 그 일지로 갑니다. VS Code 1.101 이상이면 되고 Cursor·VSCodium 은 Open VSX 에서 받습니다. 앱 없이 설치하면 읽기 전용으로 동작하며, 확장은 네트워크를 쓰지 않습니다.
v2.45.0 부터 뜨지 않습니다. Apple Developer ID 로 서명하고 공증(notarization)까지 마친 빌드라, .dmg 를 열어 Applications 로 끌어다 놓고 그냥 실행하면 됩니다. 그전 버전은 서명이 없어 macOS 가 「손상되었기 때문에 열 수 없습니다」로 막았고 — 실제 손상이 아니라 내려받은 파일에 붙는 격리 표시였습니다 — 터미널에서 xattr -dr com.apple.quarantine 을 직접 쳐야 했습니다. 옛 버전을 쓰고 계셨다면 이 버전으로 올라온 뒤 처음 열 때 키체인이 한 번 물어볼 수 있습니다: API 키는 맥의 키체인에 들어 있고 그 접근 권한이 앱의 서명에 묶여 있는데 서명 주체가 바뀌었기 때문입니다. 「항상 허용」을 누르면 그다음부터는 묻지 않고, 저장해 둔 키가 사라지지도 않습니다.
v2.40.0 부터 구분합니다. 그전에는 터미널을 넷으로 쪼개 Claude Code 를 넷 띄워도 앱은 세션 하나로만 봤습니다 — 훅은 대화마다 다른 id 를 들고 오는데 그 값이 버려지고 화면에는 상수 라벨 하나만 남았기 때문입니다. 이제 작업 세션이 참여한 대화를 전부 기록하고(메뉴바 트레이가 「대화 4」처럼 그 수를 말하며 툴팁에 어느 대화들이었는지 답니다), 작업 일지 프론트매터에 그 일지를 쓴 대화의 id 가 함께 적힙니다(기록 도구가 Claude Code 의 자식 프로세스라 자기 대화를 알고 있습니다 — 모르는 자리에서는 줄 자체가 나가지 않습니다). 작업 세션 자체는 일부러 쪼개지 않았습니다: 파일 변경을 보는 워처는 누가 썼는지 모르므로 세션을 N개로 나누면 파일 수와 커밋 위치가 임의로 복제됩니다. 그릇은 하나로 두고 누가 붙어 있었는지를 기록하는 쪽이 정직합니다. 터미널 화면에서는 세션마다 색을 골라(카드 우클릭) 왼쪽 띠와 터미널 테두리로 구별하고, 카드가 「2/4 실행 중」처럼 그 탭에서 몇 개가 돌고 있는지 말하며 레일을 접어도 그 수가 아이콘에 남습니다.
네. 코드 화면에서 프로젝트 파일을 트리로 탐색해 바로 열어 고치고 ⌘S 로 저장합니다. v2.15.0 부터는 편집기가 코드를 이해합니다 — 타이핑 중 자동완성, 틀린 곳에 진단 밑줄, 이름 위 호버 타입·문서, F12·⌘클릭으로 정의로 이동, 심볼 이름 바꾸기(쓰는 모든 파일이 함께 바뀝니다), 밑줄에 딸려 오는 코드 액션까지. Rust·TypeScript/JavaScript·Python·Go 에서 동작하고, 해당 언어 서버가 컴퓨터에 없으면 없다고 말해 줍니다. 언어 서버는 그 저장소의 빌드 스크립트를 실행할 수 있어서, v3.10.0 부터는 이 기기에서 프로젝트를 신뢰한 뒤에 켜집니다(상태줄에서 한 번). VS Code 포크가 아니라 표준 LSP 를 직접 붙인 것입니다. 점으로 시작하는 파일(.oculpm/ · .github/ · .gitignore)도 트리에 보입니다. 검색 결과와 코드 맵에서 해당 줄로 바로 점프하고, 에이전트가 같은 파일을 고치면 저장 시 덮어쓰지 않고 어느 버전을 유지할지 묻는 배너가 뜹니다. 저장하지 않은 편집은 화면을 옮겨도 남습니다. v2.16.0 부터는 탭과 좌우 분할로 여러 파일을 같이 보고, 트리에서 파일을 만들고 이름을 바꾸고 드래그로 옮기며(삭제는 휴지통), 중단점을 찍고 한 줄씩 실행하는 디버거(Rust·Python·Go)와 에이전트가 바꾼 부분을 본문 안에 겹쳐 보는 인라인 비교까지 앱 안에서 해결됩니다. v2.19.0 부터는 ⇧⌘F 프로젝트 전역 검색·치환도 사이드바에 붙습니다 — 디스크의 현재 내용을 대소문자·단어 단위·정규식으로 찾고, 매치를 선택한 채 열며, 한 곳·한 파일·전체 치환까지 됩니다. v2.20.0 부터는 이미지(png·jpg·gif·webp 등)와 PDF 를 열면 편집기 대신 미리보기가 뜹니다 — 그림은 투명한 부분이 드러나는 체크무늬 위에 창 맞춤 ↔ 실제 크기로, PDF 는 문서 그대로. 편집기의 2MB 제한과 무관하게 16MB 까지 봅니다. svg 는 그림이자 곧 코드라 편집기로 열리되, v2.34.0 부터는 저장하지 않은 버퍼 기준으로 그린 그림이 옆에 함께 뜹니다. v2.21.0 부터는 Finder 에서 파일·폴더를 트리로 끌어다 놓거나 ⌘V 로 붙여넣어 프로젝트에 넣습니다 — 같은 이름은 덮어쓰지 않고 -2 로 붙고, 폴더는 안쪽까지 들어오되 심볼릭 링크는 제외합니다. v2.34.0 은 하루 종일 켜 두는 편집기의 위생을 더합니다: 저장 시 후행 공백·끝줄 정리와 자동 저장(둘 다 기본 꺼짐 — 설정 → 코드에서 켜고, 자동 저장은 커서가 있는 줄을 건드리지 않습니다), 훑어도 쌓이지 않는 미리보기 탭(더블클릭이나 첫 편집에 고정되고, 미저장 편집이 든 탭은 교체되지 않습니다), ⇧⌘O 심볼·⌃G 줄 이동, 지금 어느 함수 안인지 위에 남기는 스티키 스크롤, 프로젝트 전체 진단을 파일별로 모으는 문제 패널, 그리고 저장·에이전트 편집마다 판을 남기는 로컬 히스토리(.oculpm/ 안이고 .env* 는 담기지 않으며 파일당 50판·프로젝트 512MB 상한, 되돌리기도 평소의 저장 경로를 지나갑니다). v2.47.0 부터는 ⌘P 로 파일을 이름 조각으로 열고(agmd → AGENTS.md), 트리와 탭 이름이 git 상태(수정·추가·삭제)와 진단(오류·경고)을 색으로 말하며, 브레드크럼이 커서가 든 심볼을 보여 줍니다. ⌥Z 줄바꿈은 산문 파일에서 자동으로 켜집니다.
네. v2.10.1 부터 ⌘J 로 어느 화면에서나 터미널 도크가 열립니다. 붙이는 자리는 아래(가로로 넓게)·왼쪽·오른쪽(세로로 길게) 셋 중에 고르고, 경계를 끌어 크기를 맞춥니다. 터미널만 담긴 별도 창으로 떼어낼 수도 있으며 셸은 끊기지 않고 스크롤백까지 따라옵니다. v2.22.0 부터 세션은 왼쪽 세로 목록에 서고 카드마다 상태·에이전트·경과 시간·마지막 명령이 함께 보입니다 — 세션을 끌어 화면 가장자리에 놓으면 그 자리에 갈라져 둘을 나란히 볼 수 있고, 나뉜 화면의 손잡이(⠿)로 자리를 바꾸거나 독립 세션으로 빼냅니다. 글자 크기는 설정 → 모양에서 px 로 정하고, 줄 간격과 여백은 밀도(넉넉/표준/조밀)로 따로 조절합니다.
v2.23.0 이 그 문제를 겨냥합니다. 에이전트가 사람을 부르면(터미널 벨) 그 세션이 노랗게 서고 목록 위에 「N개가 기다립니다」가 떠, 누르면 기다리는 세션으로 곧장 갑니다 — 여러 개면 누를 때마다 다음 것으로 돕니다. 벨은 프로그램이 직접 부른 것이라 확실하고, 「20초째 조용하다」는 추정이므로 추정이라고 적습니다. 명령 단위로도 나뉩니다: 명령마다 왼쪽에 상태 막대(성공 초록·실패 빨강)가 서고, 오른쪽 가장자리 띠에 스크롤백 전체의 실패 지점이 점으로 찍히며, ⌘↑/⌘↓ 로 명령 사이를 건너뜁니다. 상태 막대를 누르면 명령·출력 복사와 함께 「일지로 남기기」·「플래너에 붙이기」가 나오고, 일지는 명령줄·종료코드·걸린 시간·출력 끝 40줄이 채워진 채 열립니다. 다시 실행 버튼은 일부러 두지 않고 프롬프트에 채우기만 합니다 — 눈으로 확인하지 않은 명령을 바로 돌리지 않게 하려는 것입니다.
네, v2.24.0 부터 보입니다. 스킬·규칙 화면의 항목마다 「30일 N회」 배지가 붙고, 예산 바가 세션당 들어가는 양을 항상 로드·조건부(실측)·무관·스킬 안내·에이전트·커맨드로 갈라 보여 줍니다. Claude Code 가 이 컴퓨터에 남기는 대화 기록에서 규칙이 실제로 주입된 순간을 결정론적으로 세는 것이라 LLM 도 네트워크도 쓰지 않습니다. v2.36.0 부터는 조건부 규칙의 배지가 글로브 개수가 아니라 그게 이 프로젝트에서 실제로 무는 파일 수를 말하고(30% 를 넘으면 「사실상 상시」), 실어 놓고 CLAUDE.md 에서 부정한 규칙을 근거 문장과 함께 짚어 줍니다. 한 번도 안 걸린 스킬은 잘못이라고 단정하지 않습니다 — 대상 파일이 없어서인지, 「요청할 때만」이라 적어 둬서인지, 방금 만들어서인지를 갈라 적고, 진짜 설명 문제일 때만 고쳐 쓰기를 권합니다.
아니요, v2.19.0 부터는 끊기지 않습니다. 터미널 세션을 앱과 분리된 프로세스가 쥐고 있어, 자동 업데이트나 앱 재시작 뒤에도 터미널 탭이 스크롤백·실행 중이던 프로그램(Claude Code 세션 포함)까지 그대로 되살아납니다. 다만 v2.34.0~v2.34.1 은 예외였습니다 — 그 프로세스와 만나는 자리의 이름을 버전에 따라 바꾸는 바람에, 그 판으로 업데이트할 때 한 번 세션이 끊겼습니다. v2.35.0 이 자리를 고정하고 옛 자리의 프로세스까지 이어받도록 고쳤으며, 세션을 쥔 프로세스를 서둘러 내리는 길도 전부 없앴습니다. 터미널 탭이나 프로젝트 탭을 직접 닫으면 그 세션은 종전처럼 정리됩니다.
네. v2.10.0 부터 사이드바의 Claude Code 화면에서 진짜 claude 가 앱 안에서 에이전트로 구동됩니다(Agent Client Protocol). 파일 수정·명령 실행 같은 도구 호출과 권한 승인이 대화 안 카드로 오고, v2.11.0 부터는 편집 diff(지운 줄·넣은 줄)가 카드에 그대로 그려지고 승인 카드에도 실행될 명령·변경 내용이 실립니다. v2.14.0 부터는 한 프로젝트에서 대화 여러 개를 나란히 굴립니다 — A 가 답하는 중에 새 대화를 열어 곧바로 말을 걸 수 있고, 승인 카드도 대화마다 따로 서서 한 대화를 멈춰도 옆 대화의 승인이 함께 거절되지 않습니다. 사고 강도(Effort)와 권한 모드를 한 트랙에서 고르고, 턴이 끝나면 무엇을 얼마나 했는지 한 줄 영수증이 남습니다. 기존 구독 로그인을 그대로 쓰고 어댑터는 첫 실행에 자동 설치됩니다. Claude Code 를 따로 깔 필요가 없는 것은 이 어댑터가 실행 파일을 함께 들고 오기 때문이고, v2.32.0 처럼 앱이 어댑터를 올리면 안에 든 Claude Code 도 같이 새것이 됩니다 — 누를 버튼은 없습니다. 계획 모드를 마칠 때는 계획만 들고 새 대화로 이어 가는 선택지도 고를 수 있는데, 지금까지 오간 이야기가 사라지고 되돌릴 수 없어서 그 버튼만 경고색이고 무엇이 사라지는지 버튼 위에 적힙니다. v2.35.0 부터는 대화의 세션 id 가 상단바와 지난 대화 목록에 보입니다 — 앱 안의 대화는 Claude Code 자신의 것이라, 누르면 복사되는 그 id 로 터미널에서 claude --resume <id> 로 같은 대화를 그대로 이어 열 수 있습니다.
v2.44.0 부터 도구 호출이 15가지 우리 어휘로 그려집니다. 앱이 터미널에 심어 둔 기록 도구로 에이전트가 일지를 쓰면 「일지 기록」, 계획을 고치면 「계획 갱신」이라고 뜹니다 — 예전에는 셋 다 터미널 아이콘과 셸 명령 한 줄이었습니다. 읽고·고치고·찾는 일은 묶어서 한 줄로 접지만 승인 대기·오류·기록 관련 일은 절대 접지 않습니다(손이 필요한 자리가 접혀 숨는 일이 없습니다). 줄을 펼치면 에이전트가 실제로 주고받은 원본이 맨 아래에 접힌 채로 늘 있어서, 우리 분류가 틀렸을 때 볼 자리가 있습니다. 셸 명령을 읽을 때는 확신이 없으면 그냥 명령으로 그립니다 — 「일지를 썼습니다」가 틀리면 그건 기록에 대한 거짓말이기 때문입니다. 그리고 「돌고 있다」와 「모른다」를 구별합니다: 15초 넘게 아무 신호가 없으면 「실행 중 · 신호 없음」이라고 말합니다.
네. 플러그인 훅이 대화가 끝날 때마다 판정하고, 코드를 고쳤는데 일지가 없으면 턴을 한 번 막아 기록하라고 말합니다(대화당 한 번). v2.43.0 부터 그 판정이 대화 단위입니다 — 예전에는 프로젝트 전체의 가장 최근 일지 시각 하나로 봤기 때문에, 터미널을 여러 개 띄우면 옆 대화의 일지가 내 누락을 가리고 반대로 옆 대화의 편집이 내 것으로 읽혔습니다. 이제 근거가 없으면 「모른다」고 말합니다 — 모름을 미기록으로 뭉뚱그리지 않습니다. 앱 안에서 연 Claude Code·Codex 대화도 셉니다: 턴이 끝날 때 판정하고, 빠졌으면 대화 위에 한 번 알린 뒤 기록하면 스스로 사라집니다. 앱 안 대화와 터미널의 에이전트는 서로를 알아봐 한쪽이 고친 파일로 다른 쪽이 붙잡히지 않습니다. 다만 여러 대화가 동시에 살아 있으면 게이트는 침묵합니다 — 누구의 편집인지 확정할 수 없을 때 엉뚱한 대화를 붙잡느니 말하지 않는 쪽을 골랐고, 그 경우에도 「모름」으로 원장에 남습니다.
여섯뿐입니다. ① LLM 요청 — 여러분이 고른 프로바이더로 직접 갑니다(중계 서버가 없습니다). ② 앱 안 Claude Code · Codex — 그 에이전트가 여러분의 구독으로 하는 통신과, 처음 쓸 때 npm 에서 받는 어댑터 한 번(버전·해시 고정). ③ 업데이트 확인 — GitHub 릴리스 파일 한 장. ④ GitHub 조회 — 과거 패치노트·번들·테마 파일(GitHub 또는 oculpm.com 갤러리), 눌렀을 때만. ⑤ 임베딩 모델 최초 1회 — 의미 검색을 처음 켤 때 받아 기기에 저장합니다. 코드가 올라가지 않고 모델이 내려옵니다. ⑥ Notion 연동 — 켜야만 존재합니다. 절대 안 나가는 것: 일지 본문(AI 에 물을 때 제외) · .oculpm/ 파일 · 소스 코드(질문에 실린 스니펫 제외) · API 키(OS 키체인). 사용 통계와 크래시 리포트는 수집하지 않습니다 — 분석 SDK 가 앱에 없습니다. 전체 목록과 직접 세는 법은 개인정보 페이지에.
v3.2.0 부터 확인 표시는 확인한 그 본문의 지문과 함께 남습니다. 그 뒤 본문이 바뀌면 그 일지는 원장 행과 열람 머리띠에 「확인 뒤 내용이 변경됐어요 · 다시 검토」로 서고, 「검증됨만」 필터와 변경 검토의 그룹은 그것을 확인된 것으로 세지 않습니다. 다시 읽고 확인을 누르면 지금 내용에 다시 묶입니다. 3.2.0 이전에 확인해 둔 일지는 지문이 없으므로 그대로 인정합니다 — 소급해서 흔들지 않습니다. 지문은 .oculpm/ 의 일지 파일 머리말(verified_hash)에 적히므로 앱 없이도 읽을 수 있습니다.
네. v2.30.0 부터 설정 → 데이터 → 「지난 대화 들여오기」에서 Claude 등이 내보낸 대화 파일(.json 또는 .zip)을 열면 그 안의 대화가 날짜·제목·발화 수·추정 갈래와 함께 목록으로 뜨고, 그중 이 프로젝트와 관련된 것만 골라 작업 일지로 옮깁니다. 목록을 읽는 동안에는 아무것도 나가지 않습니다 — 수백 개를 훑는 것까지가 전부 오프라인·무과금이고, 고른 대화에만 배경 작업 모델이 한 번씩 붙습니다. 들여온 기록은 원본 날짜 그대로 그 날의 폴더에 들어가고, 같은 파일을 두 번 열어도 이미 들여온 것은 「들여옴」으로 표시된 채 다시 과금되지 않습니다(목록에서 사라지지는 않습니다 — 사라지면 왜 안 보이는지 알 수 없으니까요). 산출물은 전부 「검토 안 함」입니다: 이 저장소에서 일어난 일이 아니라 다른 곳의 대화를 모델이 옮겨 적은 것이니, 읽고 확인 표시를 하기 전까지는 초안입니다.
기록·검색·diff·플래너처럼 로컬에서 도는 것은 그대로입니다. 모델을 부르는 자리에서는 v2.30.0 부터 셋이 달라졌습니다. ① 고른 모델이 응답하지 않아 폴백이 대신 답하면 그 답변에 배지가 붙습니다 — 예전엔 다른 모델이 답했는데 화면엔 고른 모델 이름이 그대로 떴습니다. 폴백은 그 호출 한 번뿐이고 설정 기본값은 바뀌지 않습니다. ② 못 닿는 프로바이더는 사라지지 않고 흐려집니다 — 사라지면 설정이 날아간 줄 알고, 막으면 연결이 돌아온 순간 쓸 수가 없습니다(사유는 툴팁에). ③ 자동화는 실패가 아니라 연기됩니다: 네트워크에 닿지도 못한 발동은 「연기됨」으로 남고 다음 시각을 태우지 않아 연결되면 따라잡기 규칙이 집어 듭니다. 응답이 온 실패(429·인증 오류)는 네트워크가 멀쩡했다는 뜻이라 연기가 아니라 실패로 적습니다.
아니요. v2.29.0 부터 질문마다 계획 전체·최근 일지·작업 규칙을 통째로 다시 싣지 않습니다. 대화가 시작될 때 무엇이 있는지 목록만 한 번 싣고(그 목록은 대화가 끝날 때까지 한 글자도 바뀌지 않습니다 — 앞부분이 고정돼야 모델 쪽 프롬프트 캐시가 삽니다) 본문은 필요할 때 꺼냅니다. 과거 기록은 회상 신호가 있는 질문에만 붙습니다 — 「지난주에 뭐 했지」·「내가 뭐라고 했지」·「계획 어디까지 했지」 같은. 판정은 한/영 신호어 사전이라 AI 를 부르지 않고 결정적이며, 실릴 때도 약 800토큰 상한이 있어 넘치면 관련도 낮은 것부터 통째로 뺍니다. 규칙은 예전에 2,500자로 잘라 넣었고 그 절단이 한 번은 「시크릿을 적지 말 것」 조항을 통째로 삼켰습니다 — 이제 절대 잊으면 안 되는 세 줄만 항상 남고 나머지는 잘리지 않은 전문이 옵니다. 확정적으로 밀어 넣으려면 /rules · /plan · /journal · /skill. 설정 → 컨텍스트 탭에서 무엇이 들어가는지 직접 봅니다.
네. v2.28.0 부터 테마가 파일입니다. 설정 → 모양에서 새 테마를 만들거나 내장 다섯 벌(Solarized·Sepia·Nord·Dracula·High Contrast)을 「복제해서 편집」하고, .json 으로 내보내고 가져옵니다 — 내장도 같은 형식이라 내장이 곧 예제입니다. 편집은 별도의 미리보기 상자 없이 앱 자체가 미리보기라서, 색을 하나 바꾸면 그 순간 사이드바·카드·경계·상태색이 전부 바뀝니다. 바꾸지 않은 색은 건드리지 않습니다 — 배경만 다섯 줄 적은 테마도 온전한 테마이고 나머지는 밝게/어둡게 기본값을 물려받으며, 토큰마다 「가족 기본값으로 되돌리기」가 있습니다. 강조 계열을 하나도 지정하지 않은 테마는 고른 강조색을 그대로 두고, macOS 라면 「시스템 강조색 따르기」로 OS 설정 색을 그대로 입힙니다. 프로젝트 편집에서 테마를 묶으면 그 프로젝트를 보고 있는 창만 그 색입니다. 가져온 파일은 원래 식별자를 버리고 새로 발급받고, 이름이 겹치면 덮어쓸지 사본으로 둘지 묻습니다. 테마가 칠할 수 있는 것은 정해진 색 목록뿐이라 파일에 다른 무엇이 적혀 있어도 화면에 새지 않습니다.
네. v2.27.0 부터 기록마다 출처 배지가 붙습니다 — 직접(앱에서 사람이 작성) · 에이전트(Claude Code 등이 기록 규칙대로) · 자동 초안(작업이 멎은 뒤 배경 모델이) · 스케줄 · 감시 · MCP · 백필(git 이력에서 복원) 일곱 가지입니다. 일지 카드와 상세, 오늘 활동 피드에서 보이고, 일지 화면 위에는 출처로 좁히는 필터 줄이 섭니다(목록에 출처가 한 종류뿐이면 그 줄은 아예 그리지 않습니다 — 아무것도 못 좁히는 필터는 소음이니까요). 새 필드를 만들지 않고 일지 파일에 이미 적혀 있는 세션 id 와 에이전트 id 에서 결정론적으로 읽습니다.
네. v2.26.0 부터 설정 → 자동화에서 지시문과 빈도를 걸어 두면 앱이 그 시각에 스스로 돌립니다 — 「매주 금 17시에 이번 주 커밋과 미결 항목을 요약해라」 같은 식입니다. 빈도는 한 번만·N분·N시간·매일·매주·매월·매년·cron 여덟 가지이고, 처음 들어가면 주간 개발 요약·아침 브리핑·월간 회고 세 예시를 꺼진 상태로 제안합니다(눌러 만들고, 켤지는 그다음에 정합니다). 정의는 .oculpm/automation/ 아래 마크다운 파일이라 손으로 고치고 팀과 커밋할 수 있습니다. 자동화는 전부 옵인이고, 배경 작업 전용 모델을 고르지 않으면 오류 없이 조용히 건너뜁니다 — 모르는 사이에 과금되지 않게 하기 위해서입니다. 하루 실행 상한(기본 20회)이 있고, 실행 기록에는 성공만이 아니라 건너뜀·버림·실패가 사유와 함께 남습니다. 맥이 자고 있었거나 앱이 꺼져 있었으면 밀린 것을 쌓지 않고 딱 한 번만 따라잡습니다. v2.27.0 부터는 시계 말고 작업 폴더의 변화로도 발동합니다 — 파일 변경이 멎고 정해진 시간(빠름 0.2초 ~ 확장 10분)이 지나면 그때 한 일을 일지 초안으로 남기거나 계획을 갱신합니다.
네. v2.9.0 부터 한 창이 프로젝트 여러 개를 탭으로 뭅니다. 탭을 끌어 순서를 바꾸거나 창 밖으로 떼어내 새 창을 만들 수 있고, v2.22.0 부터는 반대로 다른 창의 탭 줄에 떨어뜨려 다시 합칠 수도 있습니다(끌고 가는 동안 꽂힐 자리가 표시되고, 마지막 탭을 옮기면 빈 창은 닫힙니다). v2.24.0 부터는 크롬과 같습니다 — 탭이 줄을 벗어나는 그 순간 진짜 창이 되어 화면 밖으로도 다른 앱 위로도 손을 따라오고, 다른 창의 탭 줄에 겨누면 들고 있던 창이 감춰지며 꽂힐 자리가 보입니다. v2.25.0 부터는 그렇게 떼어낸 창을 다시 끌어다 붙일 수 있습니다 — 탭이 하나뿐인 창은 창째로 손에 들리고, 다른 창의 탭 줄에 놓으면 합쳐지며 빈 창은 닫힙니다(Escape 로 무르면 창이 제자리로). 끌지 않고 탭을 우클릭하면 같은 일을 메뉴에서 고르고, 키보드만 쓴다면 Shift+F10 으로 그 메뉴를 엽니다. 프로젝트마다 화면·필터·사이드바 상태를 따로 기억하고, 터미널 세션은 프로젝트에 묶여 있어 탭이 창을 옮겨 다녀도 끊기지 않습니다. ⌘T 새 탭, ⌘W 탭 닫기, ⇧⌘N 새 창입니다.
AI 코딩 에이전트와 함께 일하는 개발자를 위한 로컬-우선 AI 프로젝트 매니저(AI PM)입니다. 에이전트가 한 작업을 자동으로 기록·정리하고, 변경을 로컬 diff 로 검증합니다.
「지원」 한 마디에 약속 넷이 섞여 있어 등급으로 나눕니다. ① 규칙 호환 — 규칙 파일만 심고, 일지는 모델이 규칙을 지키는 만큼 남습니다: Gemini CLI · Cursor · GitHub Copilot · Windsurf · Cline · aider · Zed · Antigravity · pi (AGENTS.md 를 읽는 에이전트라면 무엇이든 이 등급). ② 구조화 기록 — 앱이 MCP 기록 도구를 등록해 줍니다: Claude Desktop. ③ 세션 관측 — 훅으로 시작·종료를 받고 일지 없이 끝난 대화를 가려냅니다. ④ 앱 통합 — 앱 안에서 구동되고 도구 승인이 카드로 옵니다: Claude Code · Codex (②③ 포함). 등급별 근거와 실측 검증 시점은 위키의 등급표에 있습니다. 공식 빌드는 macOS Apple Silicon 뿐입니다.
Today 화면의 「스탠드업 복사」가 어제~오늘 한 일을 공유용 텍스트로 만들어 클립보드에 담고, 브랜치 화면은 그 브랜치의 커밋·일지·계획·바뀐 파일을 마크다운 한 장으로 내보냅니다. AI 를 설정하면 AI 가 다듬고, 설정이 없어도 기본 형식으로 항상 동작합니다. v2.46.0 에서 회고 화면과 그에 딸린 PR 본문·주간 보고 산출물은 걷어냈습니다 — 표면이 컸는데 쓰임이 그에 못 미쳤습니다.
네, 베타로 쓸 수 있습니다. v2.18.0 부터 맥의 Ocul-PM 이 사용자의 Tailscale 사설망 안에서만 열리는 서버를 켜고, 폰 브라우저에서 오늘 일지 · 플래너 · 논의 · AI 대화에 접근합니다. 설정 → 모바일에서 서버를 켜고 QR 를 찍은 뒤 6자리 코드로 1회 페어링하면 되고, 홈 화면에 추가하면 앱처럼 씁니다. 데스크톱에서 고른 테마가 폰에 그대로 실리고(직접 만든 테마는 아직 폰에서 밝게/어둡게만 따라갑니다), AI 의 API 키는 맥 키체인에만 머뭅니다. 베타 기간에는 검색·코드 화면이 데스크톱 전용입니다.
아니요. 모든 데이터는 프로젝트의 .oculpm/ 폴더와 로컬 SQLite 에 머뭅니다. 외부로 나가는 건 여섯뿐이고 전부 사용자가 시작합니다 — ① 직접 호출한 LLM API, ② 앱 안 Claude Code · Codex 의 통신과 처음 쓸 때 받는 어댑터 한 번, ③ 새 버전 확인, ④ 플러그인 번들·패치 노트·테마를 요청했을 때의 GitHub 조회(테마는 oculpm.com 갤러리에서도), ⑤ 의미 검색을 처음 켤 때 받는 임베딩 모델 한 번, ⑥ 켜야만 존재하는 Notion 연동(그 인증 교환만 oculpm.com 을 거칩니다 — 문서 내용은 Notion 으로 직접 갑니다). v2.18.0 의 모바일 연동(베타)도 마찬가지입니다 — 사용자의 Tailscale 사설망 안에서만 열리고 공용 인터넷에는 노출되지 않으며, 폰과의 통신도 외부 서버를 거치지 않습니다.
Claude Code 플러그인의 SessionStart 훅이 활성 계획의 미완 항목 뒤에 마지막 작업 일지 3건을 시작 컨텍스트에 싣습니다 — 네트워크 없이, 프로젝트의 .oculpm/ 만 읽어서. 무엇을 실었는지는 원장에 남고, 오늘 화면의 「이어하기」 카드가 같은 자료와 어느 대화에 포함됐는지를 보여 줍니다. 참조했는지·도움이 됐는지는 알 수 없으므로 그렇게 말하지 않습니다.
네. Claude Code 에서 /plugin marketplace add bunhine0452/Ocul-PM 후 /plugin install oculpm@oculpm 두 줄이면 훅 브리지·MCP 도구 7종·스킬 5종이 전 프로젝트에 구성됩니다. 일지와 계획은 .oculpm/ 마크다운으로 쌓이고, 앱은 나중에 설치해도 그 기록을 그대로 읽습니다.
네. Ocul-PM 은 로컬-우선이라 팀에 도입해도 코드와 기록이 밖으로 나가지 않습니다. 기업(Enterprise) 도입, 팀 단위 도입, 제휴·파트너십 제안은 bunhine0452@gmail.com 으로 보내 주세요 — 만든 사람이 직접 읽고 답합니다.
네. v2.8.5 부터 설정 → 모양에서 화면 언어를 한국어 · English 중에 고르면 화면 전체와 오류 메시지가 함께 바뀝니다. AI 가 쓰는 작업 일지·논의·플래너 항목의 언어는 따로 지정할 수 있어 화면은 영어, 기록은 한국어로 남기는 것도 가능하고, 이미 기록된 문서는 다시 쓰지 않습니다.
네. GitHub Releases 에서 무료로 받을 수 있습니다 — macOS(Apple Silicon)와, 베타인 Windows(x64) · Linux(x64, AppImage · deb)입니다. 한 번 설치하면 이후 버전은 앱 안에서 자동으로 업데이트됩니다(Linux deb 는 패키지 관리자로). Intel 맥은 임베딩 런타임의 x86_64 사전 빌드가 없어 보류입니다.
네, 베타로 제공합니다. Windows 는 10 2004(빌드 19041) 이상 · 11 의 x64 설치 파일(.exe), Linux 는 x64 AppImage 와 deb 입니다. Linux 는 glibc 2.35 이상(Ubuntu 22.04 · Debian 12 이후)과 libEGL · libGLESv2 가 필요하고, AppImage 는 FUSE 2 가 있어야 합니다. Windows 빌드는 코드 서명이 없어 처음 실행할 때 SmartScreen 이 「Windows의 PC 보호」 를 띄웁니다 — 「추가 정보 → 실행」 을 누르면 됩니다. Visual C++ 런타임이 없는 PC 에서는 설치 파일이 먼저 깔아 줍니다. Windows 설치본과 AppImage 는 앱 안에서 자동 업데이트되고, deb 는 새 .deb 로 업데이트합니다. 매 릴리스 CI 러너에서 설치와 실제 앱 E2E 를 통과한 빌드만 올라가며, 통과하지 못한 버전에는 그 OS 파일이 없습니다. 실제 PC 에서의 확인이 쌓이면 베타를 뗍니다.
가입도, 설정도, 비용도 없습니다. 내려받으면 그게 전부입니다.
베타 Windows x64 Linux AppImage Linux .deb
빨리 가는 개발자는 많습니다. 기억하며 가는 개발자가, 멀리 갑니다.