Skip to main content
모든 에이전트에서 쓰는 명령 다섯 개, 그리고 OpenCode에만 필요한 여섯 번째가 있습니다. 적용할 컴퓨터의 에이전트 세션 안에서 실행하며, Claude Code와 OpenCode에서는 / 명령, Codex에서는 $ Skill입니다.
Claude Code에서는 모든 명령에 네임스페이스가 붙습니다. /nomo-cc:를 입력하면 전체 목록이 표시됩니다. OpenCode의 명령 이름은 전역에 평평하게 놓이므로, 그쪽에서 Nomo 명령에는 접두사가 전혀 붙지 않습니다.
어느 것도 요란하게 실패하지 않습니다. 할 일이 없을 때에도 모두 정상적으로 종료합니다 — Not paired는 오류가 아니라 성공입니다. 마지막 줄의 빈칸은 빠뜨린 것이 아닙니다. Claude Code와 Codex는 각자의 호스트를 통해 업데이트되므로 Nomo가 거기에 명령을 더하지 않습니다. 각각 무엇이 필요한지는 — Codex는 대개 아무것도 필요 없습니다 — 설치에 있습니다.

pair

인자 없이 실행하면 QR 코드가 담긴 테마 페이지가 브라우저에서 열립니다. 앱에서 스캔하면 페이지가 스스로 **Paired ✓**로 바뀝니다. code 인자를 주면 브라우저를 아예 건너뛰고, 헤드리스 장비나 SSH 세션을 위해 입력 가능한 일회용 코드를 출력합니다. 이 방식이 차선책인 데에는 이유가 있습니다. 그 코드가 터미널에, 따라서 에이전트의 트랜스크립트에 남기 때문입니다. 페어링은 사용되지 않으면 10분 뒤에 만료됩니다. 페어링 하나는 에이전트가 아니라 컴퓨터에 적용되므로, 같은 Mac의 Claude Code, Codex, OpenCode가 이를 공유합니다. 전체 절차는 페어링에 있습니다.

status

무언가 이상해 보일 때 가장 먼저 실행할 명령입니다. 정상인 컴퓨터의 출력은 차분한 몇 줄뿐입니다. 체크 표시는 없습니다. 아무 문제가 없다는 것은 곧 할 말이 없다는 뜻이기 때문입니다.
빈 줄 위쪽은 컴퓨터를 설명하며, 어느 에이전트에서 실행하든 내용이 같습니다. 그 아래에는 지금 실제로 사용 중인 에이전트가 — you are here 표시와 함께 나옵니다.
이 컴퓨터가 페어링되어 있는지, 어떤 워커와 통신하는지, 어떤 페어링을 갖고 있는지를 보여 줍니다. NOT PAIRED는 여기에서 나가는 어떤 것도 앱에 도달하지 않는다는 뜻이며, 그 아래 화살표가 지금 사용 중인 에이전트에 맞는 pair 명령을 출력해 줍니다.
이벤트가 이 컴퓨터를 마지막으로 실제로 떠난 시점과 워치독의 실행 여부입니다. 워치독이 실행 중이 아니어도 그 자체는 문제가 아닙니다. 다음 세션에서 스스로 시작합니다. 세션이 분명히 실행 중인데 never라면 그것은 문제입니다.
로컬 네트워크를 통한 직접 연결입니다. 이 컴퓨터가 열어 둔 포트와 id, 휴대폰이 마지막으로 여기에 도달한 시점, 그리고 이 Mac이 마지막으로 주소를 알린 시점입니다. 중요한 것은 가운데 줄입니다. 직접 연결이 실제로 동작한 적이 있다는 유일한 증거이기 때문입니다. 주소를 알린 지 한참인데 한 번도 도달하지 않았다면 휴대폰이 여기까지 오지 못하는 것이고, 방금 알렸는데 아직 도달하지 않았다면 판단하기에 이릅니다. 요청이 거부되면 침묵 대신 그 이유가 함께 나옵니다. 한 번도 열어 본 적이 없는 컴퓨터에서는 이 줄 자체가 나오지 않습니다. 스위치는 휴대폰에 있고 기본값은 꺼짐입니다.
on은 권한 요청을 이 컴퓨터에서 붙잡아 휴대폰으로 보낸다는 뜻입니다. PAUSED는 그렇지 않다는 뜻입니다. 요청은 터미널로 가고, 몇 달이 지나든 누군가 다시 켜기 전까지 그대로입니다. 휴대폰이 아무것도 묻지 않게 되었다면 이 줄이 설명의 전부입니다. 일시 중지하기를 참고하십시오.
에이전트가 Nomo에 내용을 넘기고 있는지, 마지막으로 넘긴 것이 언제인지입니다. OpenCode에는 Hook이 없으므로 그쪽에서는 이 줄의 이름이 Plugin입니다. 아무것도 동작하지 않는다면, Claude Code는 재시작해 Hook을 로드하고, Codex에서는 /hooks를 실행하고, OpenCode는 플러그인이 로드되도록 재시작하십시오.
이제 에이전트별로 셉니다. 1 of 4 tracked here는 이 컴퓨터가 네 개의 세션을 추적하고 있고 그중 하나가 지금 사용자의 세션이라는 뜻입니다. 이미 끝났어야 할 행은 reset으로 정리합니다.
문제에는 두 가지 표시만 붙습니다. !는 문제 자체이고, →는 그에 대한 대처이며, 명령을 실행한 에이전트의 문법으로 적힙니다. 컴퓨터에 있는 다른 에이전트는 Also on this computer 아래에 한 줄씩 요약됩니다. 그중 하나에 문제가 있으면, 사용자가 직접 확인하러 갈 때까지 기다리지 않고 여기에서 알려 줍니다.
할 말이 없는 줄은 빠집니다. 페어링되지 않은 컴퓨터에는 보고할 전송 상태도 LAN도 승인 상태도 없습니다. 다른 에이전트의 문제는 여기에 전부 적히고, 나머지 세부 내용은 그 에이전트의 status 명령으로 안내합니다. 그리고 첫 줄에는 플러그인 버전이 담겨 있습니다. 버그를 제보할 때 이 줄을 함께 적어 주십시오.

approvals

이 컴퓨터의 원격 승인을 일시 중지하여, 권한 요청이 휴대폰을 기다리지 않고 곧바로 터미널로 가게 합니다. 휴대폰이 꺼져 있거나 손에 없을 때를 위한 비상구입니다.
스위치는 컴퓨터마다 하나이며 모든 에이전트가 공유합니다. Codex에서 일시 중지하면 같은 컴퓨터의 Claude Code와 OpenCode에도 적용됩니다. 페어링을 해제하지 않고, 휴대폰의 설정도 건드리지 않습니다. 휴대폰 전체에 적용되는 별도의 스위치가 있습니다: 설정의 iPhone에서 답변입니다.

reset

워치독을 멈추고 죽었거나 유령처럼 남은 세션 행을 정리한 다음, 휴대폰에도 그것을 지우라고 알립니다.
행이 오래됐거나 중복되어 보일 때 안심하고 꺼내 쓸 수 있는 명령입니다. 무엇을 건드리지 않았는지 스스로 밝히기 때문입니다. OpenCode 행은 OpenCode 서버에 속하므로, 정리되지 않는 행이 있다면 OpenCode를 먼저 종료하십시오 — OpenCode 사용하기를 참고하십시오.

unpair

페어링을 취소하고 해당 컴퓨터의 키를 지웁니다. 휴대폰에서 컴퓨터를 삭제하는 것은 다릅니다. 그렇게 하면 앱에 표시되지 않을 뿐이며, 이 명령을 그 컴퓨터에서 실행하기 전까지 Mac은 로컬 상태를 그대로 유지합니다.

update

OpenCode
OpenCode 전용이며, 무언가를 바꾸기 전에 먼저 확인합니다. 이미 최신이면 거기서 멈춥니다. 받아 오지도, 다시 설치하지도 않습니다.
받아 올 것이 있으면, 받기 전에 무엇인지부터 말합니다.
그런 다음 받아 오고, 설치 스크립트를 다시 실행하고 — 새 버전이 추가한 /nomo-* 명령을 가져오는 것이 바로 이 단계입니다 — OpenCode를 재시작하라고 알려 줍니다. 플러그인은 서버가 시작될 때 한 번만 불러오므로, 재시작하기 전까지는 예전 사본이 그대로 실행 중입니다. 확신할 수 없을 때는 실행하는 대신 거부하며, 거부할 때마다 무엇을 해야 하는지 알려 줍니다. 이전의 --ref 설치로 고정된 클론, 커밋하지 않은 변경이 남은 작업 트리, 옮겨졌거나 삭제된 클론, 그리고 여기에 설치된 것이 아예 없는 경우입니다.
업데이트 대상은 스텁이 가리키는 클론 — OpenCode가 실제로 불러오는 사본 — 이며, 당신이 입력한 명령 파일이 나온 클론과 반드시 같지는 않습니다. 클론을 여러 벌 두고 쓴다면 이 차이가 중요합니다.
Claude Code와 Codex에는 대응하는 명령이 없습니다. 업데이트를 각자의 호스트가 맡기 때문이며, Codex는 대개 실행할 것 자체가 없습니다. 둘 다 설치에서 다룹니다.

상태가 저장되는 위치

플러그인이 보관하는 모든 것은 ~/.config/cc-status/ 안에 있습니다. 페어링, 암호화 키(모드 0600), 추적 중인 세션마다 하나씩의 파일, 그리고 로컬 추적 로그입니다. 이 폴더의 내용은 어디로도 전송되지 않습니다.

소스 코드 보기

이 명령들이 곧 플러그인이고, 플러그인은 오픈 소스입니다. 내 컴퓨터에서 무엇이 실행되고 무엇이 밖으로 나가는지 정확히 알고 싶다면 답은 저장소 하나에 있습니다. 마켓플레이스 설치도 그 저장소를 그대로 복제한 것입니다.

KarrixLee/nomo

MIT 라이선스로 공개된 플러그인 전체 소스입니다. 이슈와 버그 제보도 여기에서 받습니다.