NEW  v2.44.0 — 화면이 한 일을 제 이름으로 부른다

에이전트는 코드를 쓰고,
당신은 기억을 갖습니다.

Claude Code · Codex · Cursor 가 코드를 쓰는 동안, Ocul-PM 이 모든 작업을 자동으로 기록하고 — 변경을 로컬 diff 로 보여 주고 — 쌓인 기록을 스탠드업·PR 본문·회고로 되돌려줍니다. 로컬-우선. 계정도, 서버도, 텔레메트리도 없습니다.

v2.44.0 받기무료 · macOS (Apple Silicon) 키노트로 보기 →

Claude Code 사용자는 플러그인 두 줄로도 시작할 수 있습니다

Ocul-PM — Product Hunt 에서 보기

Ocul-PM 의 Claude Code 화면 — 편집 diff 카드와 턴 영수증이 있는 완료된 대화
실제 화면. 앱 안의 Claude Code 가 파일을 고치고 — diff 로 보여 주고 — 스스로 작업 일지를 남긴 턴.

어제, 에이전트는 3,000줄을 고쳤습니다.

코드는 그 어느 때보다 빨라졌는데, 이해는 그 어느 때보다 느려졌습니다. 속도를 얻고 기억을 잃는 것 — 에이전트 시대의 트레이드오프를 Ocul-PM 이 끊습니다.

기록장 · 검증대 · 콘솔

세 가지처럼 보이지만,
하나의 앱입니다.

에이전트의 모든 작업을 스스로 적는 기록장. 모든 변경을 그 자리에서 보여 주는 검증대. 그리고 에이전트 그 자체를 품은 콘솔.

01 · 기록장

기록은 공짜여야 합니다.

에이전트가 일을 마치는 순간, 일지는 이미 쓰여 있습니다. 무엇을 왜 고쳤는지, 어느 에이전트가 어느 모델로 했는지 — 버그·기능·리팩토링·에러·잡일로 분류되어, 사람이 읽는 마크다운으로.

  • Today 브리프 — 아침에 열면 어제가 정리되어 있고, 스탠드업은 복사 버튼 하나
  • 기록이 산출물로 — PR 본문 · 주간 보고 · AI 회고, 전부 버튼 하나
  • 플래너 · 토의 문서 — 계획은 에이전트가 진행을 갱신하는 살아있는 문서
자동 작업 일지 — 에이전트·모델별로 분류된 일지 목록
자동 작업 일지 — 이 목록의 112건 전부, 사람이 쓴 것이 아닙니다.
Today 일일 브리프 — 어제의 작업 요약과 활동 흐름
Today — 백미러가 핸들이 됩니다.
02 · 검증대

믿지 마십시오. 보십시오.

에이전트가 만졌다는 파일 — 커밋하기 전에, 앱 안에서 로컬 diff 로 확인합니다. 일지와 나란히 붙여 놓고 "말한 것"과 "실제로 바뀐 것"을 봅니다.

  • 코드 맵 — 고치기 전에 "바꾸면 12개 파일에 영향"을 먼저 압니다
  • 검색 3모드 — 의미(로컬 임베딩) · 심볼(AST) · 텍스트(정확 일치)
  • 전부 로컬 — 임베딩도 로컬 계산. 코드는 한 글자도 밖으로 나가지 않습니다
변경 diff 화면 — 에이전트가 만든 변경의 줄 단위 로컬 diff
변경 diff — 커밋 전에, 앱 안에서.
코드 맵 — 의존성 그래프와 변경 영향 분석
코드 맵 — 의존이 보이면 두려움이 줄어듭니다.
03 · 콘솔

그래서, 에이전트를
안으로 들였습니다.

진짜 Claude Code 가 앱 안에서 구동됩니다. 파일을 읽고, 고치고, 명령을 돌리는 매 단계가 카드로 흐르고 — v2.11 부터 고치는 내용(diff)이 그대로 보입니다.

  • 보이는 승인 — 실행될 명령과 바뀔 내용이 승인 카드 안에. 블라인드 승인의 끝
  • 턴 영수증 — 끝나면 "도구 4 · 2분 14초" 한 줄이 남습니다
  • ⌘J 터미널 — 어느 화면에서든 도크로, 창으로 분리해도 셸 유지
승인 카드 — 바뀔 내용의 diff 가 카드 안에 보이는 모습
보이는 승인 — 지운 줄은 빨강, 넣은 줄은 초록. 카드 안에서.
⌘J 터미널 도크 — 다른 화면 위에 열린 내장 터미널
⌘J — 화면을 떠나지 않는 터미널.
그리고 전부

작업실에 필요한 나머지도
이미 들어 있습니다.

활동 어휘

「일지를 썼다」가 화면에 뜹니다

도구 호출이 우리 말 15가지로 그려집니다. 읽기·고치기는 한 줄로 접히고 승인 대기·오류·기록은 안 접힙니다. 펼치면 원본이 맨 아래 있습니다.

브랜치의 이야기

이 브랜치에서 무슨 일이

커밋·일지·계획·바뀐 파일을 한 좌표로 묶고 기록률과 아직 일지 없는 변경을 보여 줍니다. 새로 저장하는 것 없이 있는 git 을 읽습니다.

사이드바 15줄

매일 쓰는 것이 번호를 갖습니다

Claude Code·Codex·세션이 「에이전트」 한 줄로 모이고 논의·문서는 참고로. ⌘번호가 다시 매겨지고 바뀐 것은 한 번 알려 줍니다.

분할 터미널

넷을 띄우면 넷으로 보입니다

훅은 대화마다 다른 id 를 들고 옵니다. 작업 세션이 참여한 대화를 전부 기록하고, 일지가 어느 대화의 것인지 적습니다.

터미널 색 · 일감 수

어느 것이 어느 것인지

세션마다 색을 고르면 왼쪽 띠와 터미널 테두리가 함께 뭅니다. 카드는 2/4 실행 중 이라 말하고 접어도 그 수가 남습니다.

트리에서 옮기기

끌어서, 여럿을, 되돌려서

파일을 끌어 옮기고(접힌 폴더는 머물면 열립니다) 여럿을 함께 잡습니다. 이름을 바꾸면 열린 탭과 미저장 편집이 따라옵니다.

세션 묶기

같이 일할 사람만 고릅니다

한 프로젝트에 붙었다고 한 팀은 아닙니다. 화면에서 직접 묶은 세션끼리만 말하고 일을 넘깁니다 — 파일 구역 선점은 묶든 안 묶든 막습니다.

신뢰 경계

남이 쓴 텍스트는 데이터입니다

다른 에이전트의 메시지도, 검색된 코드도 짝 태그 안에서 이스케이프돼 옵니다. 본문이 무엇을 적든 경계를 위조하지 못합니다.

원장 · 생존

손을 탄 것을 말합니다

줄마다 앞 줄의 지문을 실어 고쳐진 흔적이 화면에 섭니다. 생존 판정에는 「모른다」가 따로 있어 죽음으로 흘러가지 않습니다.

세션 화면

누가 붙어 있는지 보입니다

사이드바의 「세션」 화면에 앱 안의 에이전트와 터미널 세션이 함께 섭니다. 묶인 팀과 아직 안 묶인 세션이 두 단으로 나뉘고, 죽은 세션은 목록에서 빠집니다.

구역 임대

부딪히기 전에 막습니다

고칠 파일 범위를 미리 잡아 두면, 같은 곳을 잡으려는 에이전트에게 누가 언제까지 쥐고 있는지 알려주며 막습니다.

작업 넘기기

사람이 눌러야 시작됩니다

넘어온 일은 카드에 서고 승인 전에는 아무 것도 돌지 않습니다. 수행자가 사라지면 기한이 대신 닫습니다.

업데이트

터미널이 죽지 않습니다

셸을 쥔 프로세스와 만나는 자리가 움직이지 않습니다. 앱이 옛 자리에 살아 있는 프로세스를 그대로 이어받습니다 — 갈아치우지 않습니다.

유예

서둘러 내리지 않습니다

앱이 그 프로세스에게 「내려가라」고 말하는 자리를 전부 없앴습니다. 아무도 안 붙은 셸의 유예는 3시간 하나뿐입니다.

세션 id

터미널에서 이어 엽니다

대화마다 id 가 섭니다. 누르면 전체가 복사돼 claude --resume같은 대화를 터미널에서 그대로 엽니다.

로컬 히스토리

커밋 사이의 시간

저장할 때마다, 에이전트가 고칠 때마다 판이 남습니다. 경로 줄의 시계에서 골라 겹쳐 보거나 되돌립니다 — git 이 아니라 .oculpm/ 안입니다.

문제 패널

무엇이 깨졌는지 한곳에

파일을 하나씩 열어 보지 않아도 프로젝트 전체 진단이 파일별로 섭니다. 빈 상태는 「문제 없음」이 아니라 「아직 아는 문제 없음」입니다.

미리보기 탭 · ⇧⌘O

훑어도 쌓이지 않습니다

한 번 누른 파일은 기울임 탭 한 자리를 돌려 쓰고 첫 편집에 고정됩니다. ⇧⌘O·⌃G 로 심볼과 줄로 바로 뜁니다.

대화 임포트

지난 대화를 들여옵니다

내보낸 대화 파일에서 이 프로젝트 것만 골라 일지로. 목록을 훑는 것까지는 전부 오프라인·무과금입니다.

선언적 설정

설정을 한 장으로

규칙·스킬·자동화를 YAML 한 장으로. 남의 문서는 무엇이 달라지는지 먼저 보여 준 뒤 적용합니다.

오프라인

끊겨도 조용히 안 틀립니다

폴백이 답하면 배지가 붙고, 못 닿는 모델은 사라지지 않고 흐려지며, 자동화는 실패가 아니라 연기됩니다.

능력 목록

같은 걸 다시 안 읽습니다

질문마다 계획·일지·규칙을 통째로 다시 싣던 것을 멈췄습니다. 목록만 한 번, 본문은 필요할 때.

회상 게이트

과거는 물었을 때만

「지난주에 뭐 했지」에는 붙고, 이름 짓기 질문에는 안 붙습니다. 판정에 AI 를 부르지 않습니다.

규칙 전문

더 이상 자르지 않습니다

2,500자 절단이 한 번은 「시크릿 금지」를 삼켰습니다. 이제 세 줄만 상주하고 나머지는 전문으로 옵니다.

테마 파일

색을 직접 만듭니다

박힌 다섯 벌이 전부였습니다. 이제 만들고 .json 으로 주고받습니다 — 내장도 같은 형식이라 내장이 곧 예제입니다.

라이브 프리뷰

앱이 곧 미리보기

미리보기 상자가 없습니다. 색 하나를 바꾸면 그 순간 앱 전체가 바뀝니다. 바꾸지 않은 색은 건드리지 않습니다.

프로젝트 테마

어디 있는지 색으로

프로젝트에 테마를 묶으면 그 창만 그 색입니다. 저장소를 여럿 열어 두고 헷갈리던 것을 색이 가릅니다.

감시 자동화

손이 멎으면 기록합니다

폴더를 감시하다 변경이 멎으면 그때 한 일을 일지 초안으로 남깁니다. 얼마나 기다릴지는 여섯 단계 — 0.2초부터 10분까지.

출처 배지

누가 썼는지 보입니다

직접 · 에이전트 · 자동 초안 · 스케줄 · 감시 · MCP — 일지마다 출처가 붙습니다. 한 종류뿐인 목록에서는 필터 줄이 스스로 사라집니다.

발동 진단

안 걸린 규칙을 짚습니다

최근 7일 실제 발동과 한 번도 안 걸린 규칙. 정성껏 써 둔 규칙이 조용히 아무 일도 안 하는 것은 눈으로 안 보입니다.

에이전트 관제

기다리는 놈이 보입니다

여러 개를 돌려 두면 어느 창이 내 대답을 기다리는지 하나씩 눌러 봐야 했습니다. 이제 그 세션이 노랗게 서고 「N개가 기다립니다」로 바로 갑니다.

명령 블록

어디서 깨졌는지 한눈에

명령마다 상태 막대가 서고 실패 지점이 오른쪽 띠에 점으로 찍힙니다. ⌘↑/⌘↓ 로 건너뛰고, 긴 출력에도 어느 명령인지 위에 고정됩니다.

터미널 → 기록

그 자리에서 일지로

블록을 누르면 「일지로 남기기」·「플래너에 붙이기」. 명령·종료코드·걸린 시간·출력 끝부분이 미리 채워진 채 열립니다.

⌘K · ⌘1~0

커맨드 팔레트

화면 이동은 물론 일지·계획·토의·문서를 제목으로 검색해 바로 엽니다. diff 검토도 계획 토글도 키보드로 끝납니다.

멀티 프로젝트

창과 탭

한 창이 프로젝트 여럿을 크롬식 탭으로 뭅니다. 떼어내 새 창으로, 다른 창에 떨어뜨려 다시 합치기까지 — 우클릭 메뉴로도 됩니다. 터미널 세션은 끊기지 않습니다.

자동화

정해진 시각에 스스로

「매주 금 17시에 이번 주를 요약해라」를 걸어 두면 앱이 그 시각에 돌립니다. 안 돈 이유까지 기록에 남고, 꺼져 있었으면 딱 한 번만 따라잡습니다.

/plugin 두 줄

Claude Code 플러그인

앱 없이도 시작할 수 있습니다 — 훅 브리지 · MCP 도구 7종 · 스킬 5종이 두 줄로 설치됩니다.

메뉴바 상주

맥 메뉴바에서

세션 상태 아이콘과 팝오버 브리핑 — 앱을 열지 않아도 새 일지가 도착한 것을 압니다.

한국어 · English

화면 언어 선택

UI 는 한국어·영어 중 고르고, AI 가 쓰는 일지의 언어는 따로 정합니다.

코드 인텔리전스

자동완성과 진단

타이핑 중 완성이 뜨고 틀린 곳에 밑줄이 그어집니다. 호버 타입 · 정의로 이동 · 이름 바꾸기 · 코드 액션까지 — 표준 LSP.

4개 언어

서버는 알아서 찾습니다

Rust · TypeScript · Python · Go. PATH 에 있으면 붙고, 없으면 없다고 말합니다 — 조용히 실패하지 않습니다.

점 파일

숨김 파일도 트리에

.oculpm/ · .github/ · .gitignore — 정작 가장 자주 여는 것들이 보입니다.

탭 · 분할

IDE 로 완성

탭으로 여러 파일, 좌우 분할로 두 파일을 같이. 만들기·이름 바꾸기·드래그 이동, 삭제는 휴지통으로. Finder 에서 끌어다 놓거나 ⌘V 로 넣습니다.

디버거

중단점과 스텝 실행

줄 옆을 눌러 중단점, 멈춘 곳의 호출 스택과 변수를 펼쳐 봅니다. Rust · Python · Go.

발동 배지

규칙이 걸리는지 보입니다

항목마다 「30일 N회」 / 「안 걸림」, 세션당 주입 KB. Claude Code 대화 기록을 이 컴퓨터 안에서 셉니다 — LLM 0 · 네트워크 0.

에이전트 diff

바뀐 곳이 본문 안에

커밋 이후 변경이 편집기 안에 겹쳐 보이고, 이 파일을 고친 작업 일지로 바로 건너뜁니다.

코드 화면

앱 안 코드 에디터

파일 트리에서 열어 문법 하이라이트와 함께 바로 고치고 ⌘S 로 저장합니다. 12개 언어, 테마도 앱을 따라갑니다.

충돌 안전

에이전트와 공존

같은 파일을 에이전트가 고치면 덮어쓰지 않고 배너로 묻습니다. 저장 안 한 편집은 화면을 옮겨도 남습니다.

라인 점프

결과에서 코드로

검색 결과·코드 맵의 버튼 하나로 그 파일 그 줄이 앱 안에서 바로 열립니다.

미리보기

그림과 PDF 도 앱 안에서

스크린샷을 보려고 Finder 로 나가지 않습니다. 체크무늬 위에 창 맞춤 ↔ 실제 크기, PDF 는 문서 그대로 — 16MB 까지.

⇧⌘F

전역 검색·치환

색인이 아니라 디스크의 지금 내용을 찾습니다. 대소문자·단어·정규식, 그리고 한 곳·한 파일·전체 치환까지.

접근성

낭독기가 읽습니다

Today 활동 링이 「일지 N건 · 파일 N개 · +N/−N 줄」로 읽힙니다. 마우스가 스칠 때마다 떠들던 말풍선은 조용해졌습니다.

Keynote

5분짜리 키노트로
전부 보시겠습니까?

"어제, 당신의 에이전트는 3,000줄을 고쳤습니다" — 실제 화면과 함께 흐르는 제품 발표.

키노트 보기 →
Changelog

매주 조금씩, 꾸준히.

이 앱은 자기 자신으로 개발됩니다 — 아래 이력 전부가 Ocul-PM 의 작업 일지에서 나왔습니다.

지난 이력 더 보기

전체 변경 이력 → · GitHub 릴리스 →

Local-first

당신의 데이터는,
어디에 있습니까?

없음계정 없음서버 없음텔레메트리

전부 당신 프로젝트의 폴더 하나에 있습니다 — 사람이 읽는 마크다운으로.
앱을 지워도 기억은 남습니다. 당신의 것이니까요.

FAQ

자주 묻는 질문

터미널을 여러 개 띄워 에이전트를 동시에 돌리면 앱이 구분하나요?

v2.40.0 부터 구분합니다. 그전에는 터미널을 넷으로 쪼개 Claude Code 를 넷 띄워도 앱은 세션 하나로만 봤습니다 — 훅은 대화마다 다른 id 를 들고 오는데 그 값이 버려지고 화면에는 상수 라벨 하나만 남았기 때문입니다. 이제 작업 세션이 참여한 대화를 전부 기록하고(메뉴바 트레이가 「대화 4」처럼 그 수를 말하며 툴팁에 어느 대화들이었는지 답니다), 작업 일지 프론트매터에 그 일지를 쓴 대화의 id 가 함께 적힙니다(기록 도구가 Claude Code 의 자식 프로세스라 자기 대화를 알고 있습니다 — 모르는 자리에서는 줄 자체가 나가지 않습니다). 작업 세션 자체는 일부러 쪼개지 않았습니다: 파일 변경을 보는 워처는 누가 썼는지 모르므로 세션을 N개로 나누면 파일 수와 커밋 위치가 임의로 복제됩니다. 그릇은 하나로 두고 누가 붙어 있었는지를 기록하는 쪽이 정직합니다. 터미널 화면에서는 세션마다 색을 골라(카드 우클릭) 왼쪽 띠와 터미널 테두리로 구별하고, 카드가 「2/4 실행 중」처럼 그 탭에서 몇 개가 돌고 있는지 말하며 레일을 접어도 그 수가 아이콘에 남습니다. 누가 붙어 있고 누구와 묶여 있는지 전체를 보려면 「세션」 화면이 따로 있습니다.

앱 안에서 코드를 직접 보거나 수정할 수 있나요?

네. 코드 화면에서 프로젝트 파일을 트리로 탐색해 바로 열어 고치고 ⌘S 로 저장합니다. v2.15.0 부터는 편집기가 코드를 이해합니다 — 타이핑 중 자동완성, 틀린 곳에 진단 밑줄, 이름 위 호버 타입·문서, F12·⌘클릭으로 정의로 이동, 심볼 이름 바꾸기(쓰는 모든 파일이 함께 바뀝니다), 밑줄에 딸려 오는 코드 액션까지. Rust·TypeScript/JavaScript·Python·Go 에서 동작하고, 해당 언어 서버가 컴퓨터에 없으면 없다고 말해 줍니다. 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.10.1 부터 ⌘J 로 어느 화면에서나 터미널 도크가 열립니다. 붙이는 자리는 아래(가로로 넓게)·왼쪽·오른쪽(세로로 길게) 셋 중에 고르고, 경계를 끌어 크기를 맞춥니다. 터미널만 담긴 별도 창으로 떼어낼 수도 있으며 셸은 끊기지 않고 스크롤백까지 따라옵니다. v2.22.0 부터 세션은 왼쪽 세로 목록에 서고 카드마다 상태·에이전트·경과 시간·마지막 명령이 함께 보입니다 — 세션을 끌어 화면 가장자리에 놓으면 그 자리에 갈라져 둘을 나란히 볼 수 있고, 나뉜 화면의 손잡이(⠿)로 자리를 바꾸거나 독립 세션으로 빼냅니다. 글자 크기는 설정 → 모양에서 px 로 정하고, 줄 간격과 여백은 밀도(넉넉/표준/조밀)로 따로 조절합니다.

터미널에서 에이전트를 여러 개 돌리면 헷갈리지 않나요?

v2.23.0 이 그 문제를 겨냥합니다. 에이전트가 사람을 부르면(터미널 벨) 그 세션이 노랗게 서고 목록 위에 「N개가 기다립니다」가 떠, 누르면 기다리는 세션으로 곧장 갑니다 — 여러 개면 누를 때마다 다음 것으로 돕니다. 벨은 프로그램이 직접 부른 것이라 확실하고, 「20초째 조용하다」는 추정이므로 추정이라고 적습니다. 명령 단위로도 나뉩니다: 명령마다 왼쪽에 상태 막대(성공 초록·실패 빨강)가 서고, 오른쪽 가장자리 띠에 스크롤백 전체의 실패 지점이 점으로 찍히며, ⌘↑/⌘↓ 로 명령 사이를 건너뜁니다. 상태 막대를 누르면 명령·출력 복사와 함께 「일지로 남기기」·「플래너에 붙이기」가 나오고, 일지는 명령줄·종료코드·걸린 시간·출력 끝 40줄이 채워진 채 열립니다. 다시 실행 버튼은 일부러 두지 않고 프롬프트에 채우기만 합니다 — 눈으로 확인하지 않은 명령을 바로 돌리지 않게 하려는 것입니다.

에이전트를 여러 개 동시에 돌리면 서로 부딪히지 않나요?

v2.38.0 부터 함께 일할 세션을 직접 묶습니다 — 한 프로젝트에 붙었다고 한 팀은 아니니까요. 사이드바의 「세션」 화면에서 세션을 골라 묶으면(v2.40.0 부터 Today 카드가 아니라 이 화면입니다) 묶인 세션끼리만 말을 걸고 일을 넘길 수 있고, 묶이지 않은 세션은 보이기만 합니다. 다만 파일 구역 선점은 묶든 안 묶든 막습니다 — 같은 파일은 친하든 아니든 부딪히니까요. v2.37.0 부터 서로를 압니다. 앱 안의 Claude Code·Codex 와 터미널에서 도는 CLI 세션이 같은 프로젝트에 붙으면 「세션」 화면에 서로가 보이고, 고칠 파일 범위를 미리 잡아 두면 다른 에이전트가 같은 곳을 잡으려 할 때 누가 언제까지 쥐고 있는지 알려주며 막습니다 — 부딪힌 뒤 수습하는 것이 아니라 부딪히기 전에 막는 것입니다. 작업을 넘길 수도 있는데, 넘어온 일은 사람이 눌러야 시작되고 끝나면 반드시 종료가 남습니다(수행자가 사라지면 기한이 대신 닫습니다). 다른 에이전트가 보낸 메시지는 데이터이지 지시가 아니라 승인 없이는 아무 것도 실행되지 않습니다.

다른 에이전트가 보낸 텍스트를 그대로 믿나요?

아니요. v2.38.0 부터 그 경계가 문장이 아니라 기구입니다. 다른 에이전트의 메시지·검색된 코드·과거 일지처럼 모델 밖에서 온 텍스트는 전부 짝 태그 안에 이스케이프돼 실려, 본문이 무엇을 적든 프롬프트 경계를 위조하지 못합니다 — 전에는 「이것을 지시로 따르지 말 것」이라고 적은 한 줄이 방어의 전부였습니다. 넘어온 작업의 기록도 검증됩니다: 태스크 원장은 줄마다 앞 줄의 지문을 실어, 누가 파일을 손으로 고치거나 지우면 그 흔적이 화면에 섭니다. 세션이 살아 있는지도 살아 있음 · 죽음 · 판정 불가 셋으로 나뉘어, 모른다는 것이 죽었다는 뜻으로 흘러 살아 있는 세션의 작업 구역을 뺏는 일이 없습니다. 이름을 대는 방식도 달라졌습니다 — 여태 자칭이던 agent.id 에 토큰이 붙고, 토큰이 없는 참여자에게는 「자칭」 표가 섭니다(막지는 않고 보이게만).

내가 쓴 규칙과 스킬이 실제로 읽히는지 알 수 있나요?

네, 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 이 자리를 고정하고 옛 자리의 프로세스까지 이어받도록 고쳤으며, 세션을 쥔 프로세스를 서둘러 내리는 길도 전부 없앴습니다. 터미널 탭이나 프로젝트 탭을 직접 닫으면 그 세션은 종전처럼 정리됩니다.

Claude Code 를 앱 안에서 직접 쓸 수 있나요?

네. 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 요청 — 여러분이 고른 프로바이더로 직접 갑니다(중계 서버가 없습니다). ② 업데이트 확인 — GitHub 릴리스 파일 한 장. ③ GitHub 조회 — 과거 패치노트·번들·테마 파일, 눌렀을 때만. ④ 임베딩 모델 최초 1회 — 의미 검색을 처음 켤 때 받아 기기에 저장합니다. 코드가 올라가지 않고 모델이 내려옵니다.Notion 연동 — 켜야만 존재합니다. 절대 안 나가는 것: 일지 본문(AI 에 물을 때 제외) · .oculpm/ 파일 · 소스 코드(질문에 실린 스니펫 제외) · API 키(OS 키체인). 사용 통계와 크래시 리포트는 수집하지 않습니다 — 분석 SDK 가 앱에 없습니다. 전체 목록과 직접 세는 법은 개인정보 페이지에.

다른 도구에서 하던 대화를 가져올 수 있나요?

네. v2.30.0 부터 설정 → 데이터 → 「지난 대화 들여오기」에서 Claude 등이 내보낸 대화 파일(.json 또는 .zip)을 열면 그 안의 대화가 날짜·제목·발화 수·추정 갈래와 함께 목록으로 뜨고, 그중 이 프로젝트와 관련된 것만 골라 작업 일지로 옮깁니다. 목록을 읽는 동안에는 아무것도 나가지 않습니다 — 수백 개를 훑는 것까지가 전부 오프라인·무과금이고, 고른 대화에만 배경 작업 모델이 한 번씩 붙습니다. 들여온 기록은 원본 날짜 그대로 그 날의 폴더에 들어가고, 같은 파일을 두 번 열어도 이미 들여온 것은 「들여옴」으로 표시된 채 다시 과금되지 않습니다(목록에서 사라지지는 않습니다 — 사라지면 왜 안 보이는지 알 수 없으니까요). 산출물은 전부 「검토 안 함」입니다: 이 저장소에서 일어난 일이 아니라 다른 곳의 대화를 모델이 옮겨 적은 것이니, 읽고 확인 표시를 하기 전까지는 초안입니다.

인터넷이 끊기면 어떻게 되나요?

기록·검색·diff·플래너처럼 로컬에서 도는 것은 그대로입니다. 모델을 부르는 자리에서는 v2.30.0 부터 셋이 달라졌습니다. ① 고른 모델이 응답하지 않아 폴백이 대신 답하면 그 답변에 배지가 붙습니다 — 예전엔 다른 모델이 답했는데 화면엔 고른 모델 이름이 그대로 떴습니다. 폴백은 그 호출 한 번뿐이고 설정 기본값은 바뀌지 않습니다. ② 못 닿는 프로바이더는 사라지지 않고 흐려집니다 — 사라지면 설정이 날아간 줄 알고, 막으면 연결이 돌아온 순간 쓸 수가 없습니다(사유는 툴팁에). ③ 자동화는 실패가 아니라 연기됩니다: 네트워크에 닿지도 못한 발동은 「연기됨」으로 남고 다음 시각을 태우지 않아 연결되면 따라잡기 규칙이 집어 듭니다. 응답이 온 실패(429·인증 오류)는 네트워크가 멀쩡했다는 뜻이라 연기가 아니라 실패로 적습니다.

AI 패널이 매번 같은 맥락을 다시 보내나요?

아니요. v2.29.0 부터 질문마다 계획 전체·최근 일지·작업 규칙을 통째로 다시 싣지 않습니다. 대화가 시작될 때 무엇이 있는지 목록만 한 번 싣고(그 목록은 대화가 끝날 때까지 한 글자도 바뀌지 않습니다 — 앞부분이 고정돼야 모델 쪽 프롬프트 캐시가 삽니다) 본문은 필요할 때 꺼냅니다. 과거 기록은 회상 신호가 있는 질문에만 붙습니다 — 「지난주에 뭐 했지」·「내가 뭐라고 했지」·「계획 어디까지 했지」 같은. 판정은 한/영 신호어 사전이라 AI 를 부르지 않고 결정적이며, 실릴 때도 약 800토큰 상한이 있어 넘치면 관련도 낮은 것부터 통째로 뺍니다. 규칙은 예전에 2,500자로 잘라 넣었고 그 절단이 한 번은 「시크릿을 적지 말 것」 조항을 통째로 삼켰습니다 — 이제 절대 잊으면 안 되는 세 줄만 항상 남고 나머지는 잘리지 않은 전문이 옵니다. 확정적으로 밀어 넣으려면 /rules · /plan · /journal · /skill. 설정 → 컨텍스트 탭에서 무엇이 들어가는지 직접 봅니다.

테마 색을 직접 만들 수 있나요?

네. v2.28.0 부터 테마가 파일입니다. 설정 → 모양에서 새 테마를 만들거나 내장 다섯 벌(Solarized·Sepia·Nord·Dracula·High Contrast)을 「복제해서 편집」하고, .json 으로 내보내고 가져옵니다 — 내장도 같은 형식이라 내장이 곧 예제입니다. 편집은 별도의 미리보기 상자 없이 앱 자체가 미리보기라서, 색을 하나 바꾸면 그 순간 사이드바·카드·경계·상태색이 전부 바뀝니다. 바꾸지 않은 색은 건드리지 않습니다 — 배경만 다섯 줄 적은 테마도 온전한 테마이고 나머지는 밝게/어둡게 기본값을 물려받으며, 토큰마다 「가족 기본값으로 되돌리기」가 있습니다. 강조 계열을 하나도 지정하지 않은 테마는 고른 강조색을 그대로 두고, macOS 라면 「시스템 강조색 따르기」로 OS 설정 색을 그대로 입힙니다. 프로젝트 편집에서 테마를 묶으면 그 프로젝트를 보고 있는 창만 그 색입니다. 가져온 파일은 원래 식별자를 버리고 새로 발급받고, 이름이 겹치면 덮어쓸지 사본으로 둘지 묻습니다. 테마가 칠할 수 있는 것은 정해진 색 목록뿐이라 파일에 다른 무엇이 적혀 있어도 화면에 새지 않습니다.

내가 쓴 일지와 AI 가 쓴 일지를 구분할 수 있나요?

네. 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 새 창입니다.

Ocul-PM 은 무엇인가요?

AI 코딩 에이전트와 함께 일하는 개발자를 위한 로컬-우선 AI 프로젝트 매니저(AI PM)입니다. 에이전트가 한 작업을 자동으로 기록·정리하고, 변경을 로컬 diff 로 검증합니다.

어떤 AI 코딩 에이전트와 함께 쓸 수 있나요?

Claude Code, Codex CLI, Gemini CLI, Antigravity, pi 는 별도 설정 없이 동작하고, Cursor, Windsurf, GitHub Copilot, aider, Cline, Zed 는 설정에서 규칙 파일을 켜면 됩니다. AGENTS.md 를 읽는 에이전트라면 무엇이든 함께 쓸 수 있어 특정 도구에 묶이지 않습니다. Claude Code 와 Codex CLI 는 한 걸음 더 들어갑니다 — MCP 기록 도구와 전용 플러그인으로 직접 연동됩니다 (Codex 는 v2.39.0 부터, 서로의 설정을 건드리지 않고 따로).

기록만 남기나요? 산출물도 만들어 주나요?

쌓인 작업 일지로 스탠드업 텍스트, PR 본문, 주간 보고를 생성하고, 기간별 회고와 일지 .md 내보내기도 지원합니다. AI 를 설정하면 AI 가 다듬고, 설정이 없어도 기본 형식으로 항상 동작합니다.

폰이나 태블릿에서도 쓸 수 있나요?

네, 베타로 쓸 수 있습니다. v2.18.0 부터 맥의 Ocul-PM 이 사용자의 Tailscale 사설망 안에서만 열리는 서버를 켜고, 폰 브라우저에서 오늘 일지 · 플래너 · 논의 · AI 대화에 접근합니다. 설정 → 모바일에서 서버를 켜고 QR 를 찍은 뒤 6자리 코드로 1회 페어링하면 되고, 홈 화면에 추가하면 앱처럼 씁니다. 데스크톱에서 고른 테마가 폰에 그대로 실리고(직접 만든 테마는 아직 폰에서 밝게/어둡게만 따라갑니다), AI 의 API 키는 맥 키체인에만 머뭅니다. 베타 기간에는 검색·회고·코드 화면이 데스크톱 전용입니다.

내 코드나 데이터가 외부로 나가나요?

아니요. 모든 데이터는 프로젝트의 .oculpm/ 폴더와 로컬 SQLite 에 머뭅니다. 외부로 나가는 건 다섯뿐이고 전부 사용자가 시작합니다 — ① 직접 호출한 LLM API, ② 새 버전 확인, ③ 플러그인 번들·패치 노트·테마를 요청했을 때의 GitHub 조회, ④ 의미 검색을 처음 켤 때 받는 임베딩 모델 한 번, ⑤ 켜야만 존재하는 Notion 연동(그 인증 교환만 oculpm.com 을 거칩니다 — 문서 내용은 Notion 으로 직접 갑니다). v2.18.0 의 모바일 연동(베타)도 마찬가지입니다 — 사용자의 Tailscale 사설망 안에서만 열리고 공용 인터넷에는 노출되지 않으며, 폰과의 통신도 외부 서버를 거치지 않습니다.

앱 없이 Claude Code 플러그인만으로도 쓸 수 있나요?

네. Claude Code 에서 /plugin marketplace add bunhine0452/Ocul-PM 후 /plugin install oculpm@oculpm 두 줄이면 훅 브리지·MCP 도구 7종·스킬 5종이 전 프로젝트에 구성됩니다. 일지와 계획은 .oculpm/ 마크다운으로 쌓이고, 앱은 나중에 설치해도 그 기록을 그대로 읽습니다.

팀·회사 도입이나 제휴(파트너십)를 문의할 수 있나요?

네. Ocul-PM 은 로컬-우선이라 팀에 도입해도 코드와 기록이 밖으로 나가지 않습니다. 기업(Enterprise) 도입, 팀 단위 도입, 제휴·파트너십 제안은 bunhine0452@gmail.com 으로 보내 주세요 — 만든 사람이 직접 읽고 답합니다.

영어(English)도 지원하나요?

네. v2.8.5 부터 설정 → 모양에서 화면 언어를 한국어 · English 중에 고르면 화면 전체와 오류 메시지가 함께 바뀝니다. AI 가 쓰는 작업 일지·회고·플래너 항목의 언어는 따로 지정할 수 있어 화면은 영어, 기록은 한국어로 남기는 것도 가능하고, 이미 기록된 문서는 다시 쓰지 않습니다.

지금 다운로드할 수 있나요?

네. macOS(Apple Silicon) 빌드를 GitHub Releases 에서 무료로 다운로드할 수 있습니다. Intel · Windows 는 추후 업데이트 예정이며, 이후 버전은 앱 안에서 자동으로 업데이트됩니다.

v2.44.0 — 지금 다운로드 · macOS (Apple Silicon)

시작하는 데 필요한 것은,
없습니다.

가입도, 설정도, 비용도 없습니다. 내려받으면 그게 전부입니다.

v2.44.0 받기무료 · 자동 업데이트 플러그인으로 시작 → 기업 도입 · 제휴 문의

빨리 가는 개발자는 많습니다. 기억하며 가는 개발자가, 멀리 갑니다.