Latent

도움말

Latent의 약속은 하나입니다: 증거 없이 안전하다고 말하지 않고, 돌아올 길 없이 지우지 않습니다.

세 가지 안전 등급

Latent이 추적하는 모든 항목에는 "지우면 어떻게 되는가"를 나타내는 세 가지 배지 중 하나가 붙습니다:

그리고 자물쇠 — 네 번째 배지가 아닙니다. 호박색 R에 자물쇠가 붙은 행은 등급이 아직 아무도 확인하지 않은 주장인 항목으로, 대개 OS·도구 캐시입니다. 사용자 작업물도 아니고 돌아온다는 보장도 아니어서, 직접 자물쇠를 열기 전에는 Latent이 가져가지 않습니다.

그래서 글자와 색은 서로 다른 질문에 답합니다. 글자는 "지우면 어떻게 되는가"를 말합니다 — R은 돌아오고, I는 돌아오지 않고, P는 아예 제안하지 않습니다. 색은 "누가 판단하는가"를 말합니다: 초록이면 Latent이 자기 증거로 움직일 수 있고, 호박색이면 판단은 당신 몫입니다. 미증명 캐시가 I가 되지 않고 R로 남는 이유가 여기 있습니다 — 돌아오지 않는다고 말하는 것은 비관 쪽 추측일 뿐, 낙관 쪽과 마찬가지로 근거가 없습니다. 소유자를 펼치면 초록 행이 먼저 오고, 여기부터 직접 판단 선이 그어진 뒤 나머지가 옵니다. 소유자 막대도 같은 기준으로 갈립니다.

자물쇠가 신호입니다. Latent이 스스로 움직이는 것은 증명된 주장뿐이고, 그 밖의 행은 잠긴 채 사용자를 기다립니다. 자물쇠를 여는 것은 의도적인 행동이며, 그 결정은 자물쇠를 연 그 스캔에서만 유지됩니다 — 새 스캔은 새 내용이므로 다시 묻습니다.

보는 건 무료, 지우는 건 라이선스

라이선스 없는 Latent은 모든 기능이 살아있는 뷰어입니다: 스캔은 얼마든지, 휠과 링 탐색, 용량 증가 추이, 로그 열람까지. 만료되는 것은 없습니다. 라이선스가 여는 것은 파일 삭제뿐이고 — 복구(되돌리기, 격리 복원)는 라이선스와 무관하게 언제나 작동합니다. 이 앱이 절대 하지 않을 한 가지가 당신의 파일을 인질로 잡는 것이기 때문입니다.

원클릭 Optimize

Latent 탭이 곧 원클릭 정리입니다: 로고 자체가 버튼이고, 실행 중에는 로고를 진행 링이 감싸며, 끝나면 확보한 용량이 표시됩니다. Optimize가 지우는 것은 기준 두 개를 모두 통과해야 합니다: 복구가 이미 증거로 뒷받침될 것, 그리고 지워져도 전혀 불편을 못 느낄 급일 것 — 벤더가 직접 비우기 명령을 제공하는 패키지 캐시, 브라우저 HTTP 캐시, 썸네일 저장소 같은 것들. 다시 마련하려면 수고가 드는 것들(내려받은 모델, 툴체인, 직접 설치한 플러그인)은 Optimize에 절대 포함되지 않고, 공간 탭에서 당신의 의도적인 클릭을 기다립니다. 이 허용 목록은 연결된 AI 어시스턴트가 접근할 수 있는 범위와 일부러 동일하게 맞춰져 있습니다 — 클릭 한 번이 어시스턴트에게 허용된 것보다 멀리 갈 수 없도록.

Optimize는 미검증 항목, 당신의 파일, 보호 경로를 절대 건드리지 않습니다. 잠금을 대신 열지 않고, 앱이나 패키지를 삭제하지 않으며, 모델을 내리지 않고, 휴지통을 비우지 않습니다. 대상 일부를 실행 중인 앱이 붙잡고 있으면 먼저 물어봅니다 — 가로막는 앱들의 체크리스트가 뜨고, 체크를 남겨둔 앱만 정중하게 종료합니다(앱 자체의 저장 확인 창이 뜹니다). 체크를 풀면 그 앱의 파일은 그냥 건너뜁니다. 이동하는 모든 것은 하나의 되돌리기 매니페스트 아래 휴지통으로 가고, 가드는 삭제하는 그 순간에 다시 실행됩니다. 확인 시트에는 일부러 건드리지 않는 것들의 목록도 함께 표시됩니다 — 보이는 숫자는 과장이 아니라 하한선입니다.

증거 사다리

"지워도 안전함"은 얻어내는 것이지 가정하는 것이 아닙니다. Latent은 네 종류의 증거를 사용합니다. 강한 순서대로:

증거의미예시
레지스트리 대조 삭제 시점에 바로 그 산출물이 레지스트리에서 여전히 응답하는지 — 이름만이 아니라 다이제스트, 리비전, 파일명까지 대조합니다. Ollama 모델, Hugging Face 저장소, LM Studio 모델
기록된 출처 도구 자체 인덱스가 모든 항목의 출처를 기록해 두었고, 전부가 지금도 서비스 중인 공개 소스로 추적될 때만 일괄 삭제가 통과합니다. npm 캐시, Gradle 모듈
벤더 계약 벤더가 자체 비우기 명령을 제공합니다 — 도구 스스로 그 캐시를 버려도 된다고 선언한 셈. 그래도 Latent은 휴지통을 거치므로 되돌리기가 남습니다. pip (pip cache purge), uv (uv cache clean)
관찰 실험 격리가 지운 것을 도구가 실제로 다시 만드는지 관찰합니다 — 관찰 하나하나가 기록된 증거가 됩니다. 당신이 잠금을 연 모든 것

증명 가능한 것과 불가능한 것이 한 저장소에 섞여 있으면, Latent은 증명된 부분만 지우고 무엇을 왜 남겼는지 정확히 알려줍니다. 내려받은 모델들 옆에 있는 직접 만든 파인튜닝은 언제나 그대로 남습니다.

잠금

미검증 항목, 당신의 파일, 보호 항목에는 잠금이 걸려 있습니다. 잠금을 여는 것은 의도적인 동의 행위입니다: 행이 선택 가능해지고, 삭제는 기록에 강제 삭제로 남으며, 확인 시트에 빨간색으로 표시됩니다. 동의에는 범위가 있습니다 — 다시 스캔하면 열린 잠금이 모두 다시 잠깁니다. Latent은 잠금을 대신 열지 않고, 연결된 AI 어시스턴트는 잠금을 아예 열 수 없습니다.

내 파일 — 공간 탭의 두 번째 페인

캐시는 Latent이 증명할 수 있는 영역이고, 진짜 당신의 공간에는 다른 계약이 필요합니다. 공간 탭의 내 파일 페인은 여섯 종류의 후보를 찾아주며, 전부 같은 규칙을 따릅니다: 목록에 올릴 뿐, 미리 선택하지 않고, Optimize와 어시스턴트는 절대 건드리지 못합니다.

격리

일부 삭제에는 휴지통 대신 더 안전한 경로 — 7일 격리 — 가 제안됩니다. 단, 잃으면 불투명하거나 되돌리기 어려운 것에 한해서입니다: 보호 항목과 읽을 수 없는 "내 데이터" 저장소. 그 외(미검증 캐시, 눈으로 고른 내 파일)는 바로 휴지통으로 가며, 복구 탭 행이 이미 그 위험을 알려줍니다. 권유일 뿐 강제가 아닙니다. 기간 중에는 복구 탭에서 클릭 한 번으로 복원됩니다. 기간이 끝나면 항목은 휴지통으로 넘어가고 — 그 사이 해당 도구가 그 경로를 다시 만들었는지를 Latent이 기록해, 원래 없던 증거를 쌓습니다. 바로 보내고 싶다면 확인 시트에서 "휴지통으로 바로"를 고르세요. 당신의 선택이 이깁니다.

되찾는 방법 — 복구 탭

되찾을 수 있는 모든 것이 하나의 정렬 가능한 표에, 삭제된 날짜와 함께 모여 있습니다:

초록 행(다시 받는 명령이 기록됐거나, 도구가 스스로 재생성함이 검증된 것)은 복구 탭에서 바로 비울 수도 있습니다 — 한 건씩 또는 전부 한 번에, 되돌릴 수 없음을 명시한 확인을 거쳐서요. 되찾는 명령이 바이트보다 오래 남기 때문입니다. 비우면 영영 사라질 행에는 그 버튼이 없습니다 — 그 결정은 Finder의 몫입니다.

행은 단계별(격리→휴지통→사라짐)로 묶여 최신순으로 나오고, 각 단계에 진입한 날짜가 그 단계의 칸에 적힙니다. 이름·출처·크기로 정렬하고, 단계로 거르고, 이름·출처·명령으로 검색할 수 있습니다. 마지막 항목이 핵심입니다: 기록은 휴지통보다 오래 남습니다. 그래서 휴지통을 비워도 의도적으로 되찾지 못할 것은 없습니다. 명령은 좁게 검증된 형태만 실행되며, 그 외에는 복사해 직접 실행하도록 보여줍니다.

휴지통은 당신의 것

Latent은 휴지통으로 옮길 뿐, 당신 모르게 비우지 않습니다. 이 앱이 넣지 않은 파일은 건드리지 않고, 되찾을 길이 없는 파일은 버리지 않습니다. 개요 탭의 휴지통 카드가 안에 뭐가 있는지 보여주고, 버튼 하나로 Finder에서 열립니다.

다만 마무리를 대신해 주는 자리가 두 곳 있습니다. 복구 탭은 항목을 하나씩, 또는 안전한 것을 한꺼번에 비웁니다 — 여기서 '안전'이란 다시 받을 명령이 기록돼 있거나, 도구가 다시 만들어 준다는 것이 검증된 행을 말합니다. 그리고 Optimize는 실행 직후, 그 실행분에 한해 같은 일을 제안합니다. Optimize는 증명된 안전 항목만 지우므로 옮긴 행은 전부 다시 받거나 다시 만들어집니다. 앱이 확신을 갖고 시작한 일을 공간 회수만 Finder에서 직접 하라고 미루는 건 앞뒤가 맞지 않습니다. 버튼에 몇 건인지, 몇 바이트인지 적혀 있고, 한 번 묻습니다.

그 밖에 휴지통에 있는 것은 — Space에서 직접 고른 항목까지 포함해 — 복구 탭이나 Finder에서 당신이 판단하도록 남습니다.

모든 것은 되돌릴 수 있습니다

삭제는 휴지통으로 가지, 곧장 소멸로 가지 않습니다. 매 실행마다 무엇이 옮겨졌는지 정확히 복원하는 되돌리기 매니페스트가 기록됩니다. 공간 탭의 정리가 무언가를 옮기기 전에는 네 가지 가드가 돕니다: 소유 도구가 실행 중이 아닐 것, 대상 안에 실행 중인 바이너리가 없을 것, 어떤 프로세스도 내부 파일을 열어두지 않았을 것, 최근 10분간 변경이 없었을 것. 가드는 계획 시점이 아니라 삭제하는 순간에 다시 확인합니다. 앱 언인스톨러는 자체 가드 한 쌍을 돕니다 — 해당 앱이 실행 중이 아닐 것, 대상 안의 파일이 열려 있지 않을 것.

앱 — 언인스톨러

앱을 클릭하면 그 번들 식별자가 소유한 모든 파일이 보입니다 — 앱 본체, 캐시, 환경설정, 컨테이너, 실행 에이전트까지. Latent은 확실하게 귀속시킬 수 있는 것만 미리 체크하며, 두 종류의 행은 절대 미리 체크하지 않습니다:

앱 자체의 체크박스를 켜면 그 아래 전부가 선택됩니다 — 사용자 데이터가 섞여 있으면 한 번 물어보고, 그 답은 세션 동안 기억됩니다. 언인스톨은 하나의 매니페스트입니다: 되돌리기 한 번이 전체를 복원합니다. macOS가 앱 본체에 관리자 권한을 요구하면 Latent은 그 일을 Finder에 넘기고 — 표준 인증 창이 뜹니다.

Docker·시뮬레이터 런타임 — 휴지통을 거치지 않는 곳

Docker는 이미지·컨테이너·볼륨·빌드 캐시를 불투명한 VM 디스크 하나에 담습니다. 파일 단위로 지우면 전체 초기화가 되므로, Latent은 그 디스크를 사용자 데이터로 표시하고 절대 미리 선택하지 않습니다. 대신 Docker 페인은 Docker 자체 기능으로 개별 항목(이미지 하나, 빌드 캐시)을 제거할 수 있게 합니다. 이 제거는 되돌릴 수 없습니다 — 휴지통을 거치지 않고 언두도 없습니다. 그래서 그 사실을 그대로 적은 확인 시트가 뜨고, Latent은 명령을 실행하기 전에 기록을 남깁니다: 무엇이 얼마나 사라졌는지, 그리고 다시 받는 docker pull 명령까지. 컨테이너가 쓰고 있는 이미지는 거부되고, 볼륨은 아예 목록에 없습니다 — 볼륨은 누군가의 데이터베이스니까요.

iOS 시뮬레이터 런타임도 같은 이유로 같은 방식입니다. 런타임은 Apple이 서명한 디스크 이미지로, 라이브 마운트된 채 Apple 자체 레지스트리에 등록되어 있어 simctl만이 제거할 수 있습니다. 계약도 같습니다 — 되돌릴 수 없다고 시트가 말하고, 기록에는 xcodebuild -downloadPlatform iOS가 남으며, 시뮬레이터가 실행 중인 런타임은 거부되고, Xcode 동봉본은 애초에 제안되지 않습니다.

Homebrew & pip

언인스톨러의 나머지 두 소스는 brewpip --user가 설치한 것들 — 몇 년씩 조용히 쌓이는 그것들 — 을 관리합니다. keg의 심링크와 wheel의 흩어진 파일들 때문에 휴지통 이동은 거짓말이 되므로, 제거는 벤더 자체 언인스톨을 실행하고 되돌리기 매니페스트에는 정확한 재설치 명령이 대신 기록됩니다. 같은 증명 규칙이 적용됩니다: 제거 전에 레지스트리 (formulae.brew.sh / PyPI)가 그 이름과 버전을 여전히 서비스하는지 확인하고 — 응답이 없으면 제거도 없습니다. 잠긴 행은 다른 패키지가 의존 중이거나, 고정 (pin)되었거나, 서드파티 탭에서 왔다는 뜻입니다. 인터프리터가 사라진 Python user-site(전형적인 ~/Library/Python/3.x 잔재)는 폴더째 휴지통 이동으로 제안되며 되돌리기도 평소대로 작동합니다.

메모리

비우기 버튼도, 건강 점수도 없습니다 — macOS는 이미 노는 메모리를 압축하고 페이징하므로, "램 확보"는 대부분 다시 읽어오는 비용을 내는 일일 뿐입니다. 진짜 문제는 잊힌 앱이 기가바이트를 쥐고 있는 것이라, 앱 메모리 카드는 당신의 앱들을 실제 점유량 순으로 보여주고 종료 버튼은 정확히 Cmd-Q입니다: 앱이 자기 저장 확인 창을 띄우고, 어떤 것도 강제 종료되지 않습니다. 시스템 프로세스는 아예 목록에 없습니다. 이 탭은 통합 메모리가 무슨 일을 하는지, 어떤 모델 데몬(Ollama, LM Studio, llama.cpp, ComfyUI…)이 가중치를 상주시키고 있는지도 보여줍니다. 모든 버튼은 벤더 자체 명령을 실행합니다 — ollama stop, lms unload --all, ComfyUI의 /free, llama.cpp 라우터 언로드 — 그래서 모델은 다음 사용 때 그냥 다시 로드됩니다. Latent은 아무것도 강제 종료하지 않습니다.

AI 어시스턴트 — MCP 연동

Latent에는 MCP 서버가 내장되어 있어, MCP를 지원하는 어시스턴트라면 무엇이든 디스크 상황을 읽고 정리를 제안할 수 있습니다. 서버는 앱 바이너리 그 자체입니다:

/Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Claude Code

claude mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Codex CLI

codex mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Gemini CLI

gemini mcp add latent /Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Grok CLI

grok mcp add latent /Applications/Latent.app/Contents/MacOS/Latent -- --mode mcp

--가 중요합니다: 이게 있어야 --mode mcp가 Grok의 플래그가 아니라 Latent에게 전달됩니다. 연결 상태는 Grok이 직접 확인해 줍니다 — grok mcp doctor는 서버가 뜨는지, 핸드셰이크가 끝나는지, 도구를 몇 개 찾았는지 보고합니다.

Cursor, Claude Desktop, Windsurf, VS Code 등 JSON 설정을 쓰는 모든 클라이언트

클라이언트의 MCP 서버 설정에 아래를 추가하세요 — Cursor는 ~/.cursor/mcp.json, Claude Desktop은 claude_desktop_config.json, VS Code는 .vscode/mcp.json(VS Code는 "mcpServers" 대신 "servers" 아래에 넣습니다):

{
  "mcpServers": {
    "latent": {
      "command": "/Applications/Latent.app/Contents/MacOS/Latent",
      "args": ["--mode", "mcp"]
    }
  }
}

전송 방식은 순수 stdio입니다 — 포트도, 데몬도, 켜둘 것도 없습니다. 클라이언트가 필요할 때 서버를 직접 실행합니다.

무엇을 시킬 수 있나요

서버는 도구 다섯 개를 제공하고, 이름을 외워 부를 필요는 없습니다 — 평소 쓰는 말로 물으면 어시스턴트가 고릅니다:

이 맥을 떠나는 것

어시스턴트가 보는 것은 경로·크기·등급·증거 라벨이고 파일 내용은 아닙니다. 다만 경로도 정보입니다: 어시스턴트가 클라우드에서 돌아간다면 홈 폴더 아래 폴더 이름들이 그쪽으로 건너갑니다 — 채팅창에 붙여넣는 파일과 같습니다. 로컬 모델이라면 이 맥에 남습니다. Latent 자신은 어디로도 보내지 않습니다. 자기를 실행한 클라이언트에게 파이프로 답할 뿐이고, 그 답이 어디로 가는지는 클라이언트가 정합니다.

어시스턴트가 할 수 있는 것과 없는 것

어시스턴트의 권한은 당신보다 엄격하게 작습니다: 검증된 다시 다운로드/자동 재생성 항목만 — 원클릭 Optimize와 동일한 허용 목록 — 건드릴 수 있고, 절대 규칙이 하나 있습니다: 모든 삭제는 당신 화면에 확인 패널을 띄우며, 오직 사람의 클릭만이 승인합니다. 응답이 없거나 Mac 앞에 아무도 없으면 삭제도 없습니다. 예외 없이. 어시스턴트는 잠금을 열 수 없고, 당신의 파일에 닿을 수 없으며, 파일 내용을 볼 수 없습니다 — 크기, 경로, 증거 라벨만 봅니다.

패널은 2분을 눈앞에서 세어 내려갑니다. 그대로 두면 답은 “아니오”이고, 어시스턴트에게는 사람이 승인하지 않았다고 전해집니다. 맥 앞에 아무도 없을 때도 같습니다.

어시스턴트가 제안한 삭제도 다른 삭제와 똑같습니다: 휴지통으로 가고, 같은 되돌리기 기록을 남기고, 복구 탭에 같은 한 번의 클릭으로 나타납니다. 요청이 어시스턴트에게서 왔다고 해서 되돌리기가 더 어려워지는 부분은 없습니다.

다른 클리너는 왜 더 큰 숫자를 약속하나요?

캐시처럼 보이는 것을 전부 세기 때문입니다. Latent의 숫자는 일부러 더 작습니다: 그 안의 모든 바이트에는 증거가 붙어 있습니다 — 레지스트리 응답, 기록된 출처, 벤더 계약, 관찰된 재생성 중 하나. 증거 없는 바이트도 보여주긴 합니다. 다만 결정은 당신 몫이고, 잠금 열쇠도 당신 손에 있습니다.

라이선스·베타 키 활성화

메뉴 막대 → Latent → 라이선스 입력…에 키를 붙여넣으면 끝입니다. 키 하나로 여러 대를 쓸 수 있습니다(베타 키는 최대 2대). 스캔에는 애초에 키가 필요 없었고, 키가 입력되는 순간 삭제가 열립니다. 계정도, 이메일도, 따로 로그인할 것도 없습니다.

다른 Mac으로 옮기기, 그리고 환불

구매한 키는 최대 3대까지 활성화됩니다. 쓰던 Mac을 정리하거나 파실 때는 그 Mac에서 Latent → 라이선스 입력…을 열고 해제를 누르세요. 자리가 곧바로 키로 돌아가 다른 곳에서 쓸 수 있습니다. 그 Mac에서 지워지는 것은 없고, 언제든 다시 활성화할 수 있습니다.

환불되거나 결제가 취소되면, 다음 실행부터 그 키로는 삭제할 수 없습니다. 복구는 어느 경우에도 계속 됩니다. 되돌리기·격리 복원·제자리로 돌리기는 애초에 라이선스 밖에 있습니다 — 환불이 제품을 가져갈 수는 있어도, 당신의 파일을 묶어둘 수는 없습니다.

단축키

궁금한 점이 있나요?

앱 안에서: 도움말 → 피드백 보내기…. 메시지와 함께 앱·macOS 버전이 전송되고, 활동 로그는 체크박스를 켠 경우에만 홈 폴더 이름을 지운 뒤 함께 갑니다. 백그라운드 전송은 없습니다 — 오직 그 버튼만 보냅니다. 또는 fattaillabs.ceo@gmail.com으로 보내주세요 — 전부 읽습니다.