> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nomo.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenCode 사용하기

> OpenCode 세션도 같은 페어링으로 휴대폰에 도달합니다. 동일하게 동작하는 것, Claude Code 및 Codex와 다르게 나타나는 것, 그리고 그 이유.

OpenCode 세션도 같은 목록에, 같은 Dynamic Island에, 같은 페어링 위에 나타납니다.
다만 OpenCode는 다른 두 에이전트와 구조가 다르기 때문에 — Hook도 없고 자체 터미널
창도 없습니다 — 몇 가지가 휴대폰에서 다르게 나타납니다.

Nomo의 원칙은 언제나 같습니다. Mac이 지킬 수 없는 버튼은 내놓지 않습니다. 그래서
휴대폰에서 할 수 없는 일에는 조용히 실패하는 컨트롤 대신 "컴퓨터에서 하십시오"라는
솔직한 안내가 표시됩니다.

<Note>
  OpenCode 전용 페어링은 없습니다. 세 에이전트가 그 컴퓨터의 같은 설정을 읽으므로,
  어느 쪽에서든 [컴퓨터를 한 번](/ko/setup/pairing) 페어링하면 됩니다. 통신에서
  유일한 차이는 어느 에이전트였는지를 나타내는 레이블뿐입니다.
</Note>

<h2 id="what-works-the-same">
  동일하게 동작하는 것
</h2>

* 세션, 상태, 폴더, 그리고 Dynamic Island.
* 셸 명령, 파일 편집, 읽기, 가져오기, 웹 검색에 대한 권한 요청 — Dynamic Island나
  앱에서 **허용**, **항상 허용**, **거부**.
* 선택지가 함께 오는 질문. 하나를 탭해 답합니다.
* 계획 읽기에 표시되는 세션의 할 일 목록.

<h2 id="the-cli-and-the-desktop-app">
  CLI와 데스크톱 앱
</h2>

둘 다 동작하며, Nomo가 하는 일도 같습니다. 데스크톱 앱은 OpenCode 자체 서버를 그
안에서 실행하고, 그 서버는 CLI와 똑같이 `~/.config/opencode/plugins/`에서
플러그인을 불러옵니다. 그래서 앱에서 시작한 세션도 제목과 모델, 작업 중인지 대기
중인지가 그대로 휴대폰에 도달하고, 권한 요청은 Dynamic Island에서도 앱에서도 답할
수 있습니다.

데스크톱 앱만을 위한 별도 설치는 없습니다. [설치](/ko/setup/install)에 적힌 내용이
양쪽 모두에 적용됩니다. 재시작도 마찬가지입니다 — 플러그인은 서버가 시작될 때 한
번만 불러오고 핫 리로드가 없으므로, 설치할 때 이미 열려 있던 앱은 종료했다가 다시
열어야 합니다.

한 가지 달라지지 않는 것이 ‘Mac에서 열기’입니다. 데스크톱 앱을 포함해 OpenCode
세션에는 나타나지 않으며, 그 이유는 [바로 아래](#no-open-on-mac)에 있습니다.

<Note>
  OpenCode 데스크톱 앱은 아직 베타입니다. 앱에서 시작한 세션이 휴대폰에 도달하지
  않으면 위의 재시작을 가장 먼저 확인하십시오.
</Note>

<h2 id="commands-have-no-prefix">
  접두사가 없는 명령
</h2>

Claude Code는 Nomo 명령에 `nomo-cc:` 네임스페이스를 붙이고, Codex는 `$` Skill로
실행합니다. OpenCode는 둘 다 하지 않습니다. 명령 이름이 전역에 평평하게 놓이므로
Nomo의 다섯 개는 그대로 `/nomo-pair`, `/nomo-status`, `/nomo-approvals`,
`/nomo-reset`, `/nomo-unpair`입니다. 붙일 접두사도, 찾아 들어갈 메뉴도 없습니다.

`/nomo-pair`는 OpenCode에서 단독으로 동작합니다. 한 번도 페어링한 적 없는 컴퓨터도
여기에서 페어링할 수 있습니다. 이미 Claude Code나 Codex에서 페어링했다면 할 일이
없습니다. OpenCode 세션이 그대로 나타납니다.

전체 목록은 [명령](/ko/sessions/commands)에 있습니다.

<Note>
  `/nomo-approvals`는 컴퓨터 단위 스위치이며 Claude Code, Codex와 공유합니다.
  OpenCode에서 끄면 세 에이전트 모두에서 꺼집니다.
</Note>

<h2 id="restart-after-pairing">
  페어링 후 재시작
</h2>

플러그인은 OpenCode 서버가 시작될 때 페어링을 한 번만 읽습니다. 페어링되지 않았던
컴퓨터를 페어링해도, 실행 중인 OpenCode는 이미 조용히 있기로 결정한 뒤입니다.
종료했다가 다시 열면 세션이 전달되기 시작합니다. [설치](/ko/setup/install)에서
요구하는 재시작과 같은 것이며, 막 페어링한 컴퓨터에 아무것도 표시되지 않을 때 가장
먼저 확인할 지점입니다.

<h2 id="deny-is-a-decision-about-the-turn">
  거부는 차례 전체에 대한 결정
</h2>

OpenCode는 거부된 권한을 도구 하나가 아니라 에이전트가 지금 하는 일 전체에 대한
답으로 처리합니다. 그래서 휴대폰에서 거부하면 **그 세션이 기다리던 나머지 권한
요청도 함께 거부됩니다**. 해당 카드들은 스스로 정리되어 휴대폰에서 사라집니다.

질문을 거절하면 다시 묻지 않고 차례가 끝납니다.

**허용**과 **항상 허용**은 언제나 탭한 카드 하나만 처리합니다.

<h2 id="no-open-on-mac">
  ‘Mac에서 열기’ 미지원
</h2>

OpenCode 세션에는 이 버튼이 표시되지 않습니다. OpenCode 세션은 터미널 창이 아니라
에디터 자체의 서버 프로세스에 속하므로 휴대폰이 앞으로 가져올 창이 없습니다 —
`opencode serve`로 실행하면 창 자체가 없을 수도 있습니다.

카드의 나머지는 평소대로 동작합니다. 컴퓨터로 돌아가는 지름길만 없을 뿐입니다.

<h2 id="opencode-asks-for-less">
  묻는 일이 적은 OpenCode
</h2>

승인은 정상적으로 동작합니다. OpenCode가 Claude Code보다 덜 물을 뿐이고, 휴대폰이
조용하다면 대개 무언가 고장 난 것이 아니라 애초에 물어본 것이 없다는 뜻입니다.

기본 설정에서 권한을 묻는 것은 네 가지입니다.

* 프로젝트 폴더 바깥의 파일을 건드릴 때.
* `.env` 파일을 읽을 때.
* OpenCode의 반복 루프 감지가 에이전트를 제자리를 맴도는 것으로 판단할 때.
* 에이전트가 사용자에게 던지는 질문.

나머지는 셸 명령을 포함해 묻지 않고 실행됩니다.

이는 OpenCode의 기본 설정이지 고정된 규칙이 아니며, 바꾸는 것은 사용자의 몫입니다.
프로젝트의 `.opencode/opencode.json`에서, 또는 모든 프로젝트에 적용하려면
`~/.config/opencode/opencode.json`에서 도구를 `ask`로 두면 그 도구는 다시 사용자를
거치게 되고, 따라서 휴대폰에도 도달합니다.

```json theme={null}
{ "permission": { "bash": "ask", "edit": "ask" } }
```

그렇게 할지 말지는 일하는 방식에 대한 취향의 문제입니다. Nomo는 에이전트가 묻는
것을 그대로 옮길 뿐, 스스로 무언가를 더하지 않습니다.

이것으로도 설명되지 않는다면 똑같아 보이는 다른 원인이 하나 있습니다. 바로 아래의
[자동 승인](#auto-approve-isnt-shown)입니다.

<h2 id="auto-approve-isnt-shown">
  자동 승인 상태 미표시
</h2>

OpenCode는 `--yolo`를 자체 인터페이스 안에서 처리하며 플러그인에는 알려 주지
않습니다. 그래서 앱은 어떤 세션이 승인을 끈 채 실행 중인지 표시할 수 없습니다 —
다른 세션과 똑같아 보입니다.

기대하던 요청이 휴대폰에 도달하지 않는다면 이 점을 확인하십시오. 자동 승인 모드로
시작한 세션은 사용자를 포함해 누구에게도 묻지 않습니다.

<h2 id="plan-mode">
  계획 모드
</h2>

계획 에이전트로 전환하면 — OpenCode에서는 <kbd>Tab</kbd> — 그 상태를 유지하는
동안 휴대폰이 해당 세션을 계획 중으로 표시합니다.

계획 자체는 컴퓨터에 남습니다. OpenCode는 `OPENCODE_EXPERIMENTAL_PLAN_MODE`가
설정된 경우에만 계획 파일을 쓰며 기본값은 꺼짐이므로, Nomo가 보낼 문서가 대개
없습니다. OpenCode 세션의 계획 읽기에 표시되는 것은 평소 차례와 똑같이 그 세션의
할 일 목록입니다.

이 변수를 켜면 한 가지가 더 휴대폰에 도달합니다. 계획이 끝났을 때 OpenCode가 스스로
묻는 *"빌드 에이전트로 전환해 구현을 시작할까요?"* 질문이 탭해서 답할 수 있는 승인
요청으로 도착합니다. 또한 저장소의 `.opencode/plans/`에 계획 파일을 쓰기 시작하므로,
이 경로는 `.gitignore`에 추가해 두는 편이 좋습니다.

<h2 id="reset-needs-opencode-closed">
  초기화 전 OpenCode 종료
</h2>

`/nomo-reset`은 프로세스가 사라진 행을 정리합니다. OpenCode에서 그 프로세스는 명령을
입력한 터미널이 아니라 **서버**입니다. 그래서 실행 중인 OpenCode에 속한 행은
의도적으로 정리되지 않습니다. 오래된 것처럼 보이는 행이 사라지지 않으면 OpenCode를
먼저 종료하십시오.

<h2 id="update-the-app">
  앱 업데이트
</h2>

모든 세션에는 어느 에이전트가 만들었는지를 나타내는 레이블이 붙습니다. OpenCode를
지원하기 전 버전의 Nomo 앱은 이 레이블을 인식하지 못하고 Claude Code의 마크로
되돌아갑니다. 세션은 모두 그대로 있고 동작에도 문제가 없으며, 로고만 잘못 표시될
뿐입니다. 휴대폰에서 앱을 업데이트하면 그것으로 끝이며, 컴퓨터 쪽은 바뀌는 것이
없습니다.
