
Even G2 × Claude Code를 【중간에 끊기지 않는】 영구 터미널로 만드는 전체 절차
요약
Even G2 스마트 글래스를 통해 Claude Code를 끊김 없이 영구적으로 사용할 수 있는 터미널 환경 구축 방법을 소개합니다. Tailscale과 WSL2를 활용하여 고정된 URL과 안정적인 연결을 확보하는 과정을 다룹니다.
핵심 포인트
- Even G2 글래스에서 Claude Code를 안정적으로 실행하는 방법
- Pinggy의 시간 제한과 Cloudflare의 URL 변경 문제 해결
- Tailscale을 이용한 고정 IP 기반의 안정적인 터미널 연결
- WSL2 환경에서 systemd 및 vmIdleTimeout 설정을 통한 환경 최적화
스마트 글래스로 코드를 작성한다는 글자 자체의 멋짐을 이길 수 있는 사람은 거의 없을 것이다. Even G2를 손에 넣고 가장 먼저 든 생각이 그것이었다. 집 PC의 Claude Code를 글래스를 통해 실행할 수 있다면, 전철 안에서도 걷는 중에도 개발을 진행할 수 있다.
그래서, 해냈다. 30분 만에 작동했다. 글래스에 Claude Code가 나타나서 싱글벙글했다. 정확히 1시간 뒤에 끊겼다.
이 기사는 거기서부터 「끊기지 않고 · URL이 바뀌지 않고 · 재부팅해도 자동으로 돌아오는」 상태까지 가져간 기록이다. Claude Max 구독만 사용하며, API 과금은 제로다. Windows + WSL2(Ubuntu) 환경에서 진행하고 있다. Mac 사용자는 WSL 부분을 읽는 대로 바꿔서 생각하면 된다.
도달한 구성은 다음과 같다.
[G2 글래스] ─(Bluetooth)─ [스마트폰/Even 앱] ─(Tailscale)─ [PC (WSL2)]
├─ Claude Code (Max)
├─ even-terminal --tailscale
...
끊기고, 또 끊기고, 계속 끊긴다
처음에는 pinggy를 사용하여 외부로 노출했다. even-terminal --expose pinggy.
쉽게 연결된다. 하지만 1시간 뒤에 끊긴다. 우연인가 싶어 다시 해봤지만, 또 1시간 만에 끊겼다. 정확히 말이다. 여기서 범인을 알 수 있었다. pinggy 무료 터널의 60분 제한이다. 「외부에서 쓰려면 서버를 빌리지 않으면 안 되는 건가」라며 잠시 낙담했지만, 아니었다. 터널을 바꾸면 될 뿐이다.
다음은 cloudflared. 시간 제한이 없다. 끊기지 않는다. 이겼다! 라고 생각했더니 이번에는 실행할 때마다 URL이 바뀐다. 재부팅할 때마다 새로운 URL을 앱에 다시 입력해야 하는 생활. 이것도 무리다.
원하는 것은 「변하지 않는 주소」라는 것을 여기서 겨우 깨달았다. 그것이 바로 Tailscale이다. 고정 IP를 받을 수 있다. 설치했다. 스마트폰에서 연결했다. 닿지 않는다. WSL2는 네트워크가 NAT로 격리되어 있어서, Tailscale의 IP가 스마트폰까지 통하지 않는다. 이것이 마지막 벽이었다.
정답은 even-terminal 자체를 Tailscale로 대기시키게 하는 것이다. even-terminal --tailscale과 tailscale up을 세트로 설정하면, http://100.x:3456으로 스마트폰에서 직접 닿는다. 이 IP는 두 번 다시 바뀌지 않는다. 여기서 드디어 승리했다.
이하, 제로 베이스에서 구축하는 절차입니다.
WSL2와 systemd
wsl --install
재부팅하여 Ubuntu 사용자 이름과 비밀번호를 설정한다. 이어서 systemd를 활성화해 둔다. 나중에 Tailscale을 자동 실행시키기 위한 토대가 되므로, 여기서 미리 해두는 것이 편하다. C:\Users\<Windows 사용자 이름>\.wslconfig에 작성한다.
[wsl2]
systemd=true
vmIdleTimeout=-1
vmIdleTimeout=-1은 WSL2가 멋대로 꺼지는 것을 방지한다. 작성한 후에는 wsl --shutdown을 하고 다시 연다. 참고로 networkingMode=mirrored는 환경에 따라 불안정했기 때문에 사용하지 않았다.
Node.js와 Claude Code
nvm으로 Node를 설치한다. even-terminal은 v20 LTS 또는 v22 이상이 필요하다. v18이면 작동하지 않는다.
sudo apt update && sudo apt upgrade -y
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# 셸을 다시 연 다음에
...
그대로 Claude Code를 설치하고, Max로 로그인한다.
npm install -g @anthropic-ai/claude-code
echo $ANTHROPIC_API_KEY # 비어 있다면 OK
claude # OAuth로 Subscription (Max)를 선택
...
echo를 중간에 넣은 것은 만약을 위해서다. ANTHROPIC_API_KEY가 환경 변수에 남아 있으면, Max가 아니라 API 종량 과금 방식으로 작동해 버린다.
even-terminal과 Tailscale
npm install -g @evenrealities/even-terminal
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up # 인증 URL이 나오면 로그인
...
스마트폰에도 Tailscale 앱을 설치하고, PC와 동일한 계정으로 로그인하여 토글을 ON으로 설정한다. tailscale status 명령어를 입력했을 때
iPhone이 나타난다면 동일한 tailnet에 접속되어 있는 것이다.
다운되어도 되살아나는 실행 스크립트
이 부분이 핵심이다. tmux 안에서 자동 재시작 루프 (automatic restart loop)로 실행되므로, even-terminal이 다운되거나 창을 닫더라도 알아서 다시 돌아온다.
cat > ~/g2.sh << 'SCRIPT'
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
...
효과를 발휘하는 것은 Tailscale에서 대기하는 --tailscale 옵션,
토큰을 고정하는 -t 옵션 (지정하지 않으면 실행할 때마다 바뀌어서 매번 앱 쪽을 수정해야 하는 상황이 발생한다),
그리고 다운되어도 5초 만에 다시 실행하는 while ... sleep 5 루프, 이 세 가지다. 서두의 export NVM_DIR은 자동 실행 시 node를 놓치지 않기 위한 일종의 주문(magic)이다. tmux ls를 입력했을 때 g2: 1 windows가 나오면 정상적으로 작동하고 있는 것이다.
PC 부팅 시 자동으로 실행하기
마지막으로, Windows의 작업 스케줄러(Task Scheduler)에서 "기본 작업 만들기"를 선택한다.
- 이름:
G2 AutoStart - 트리거: 로그온할 때
- 동작: 프로그램 시작
- 프로그램:
wsl.exe - 인수:
-u <WSL 사용자명> -- bash /home/<WSL 사용자명>/g2.sh
WSL과 Tailscale의 실행 순서가 어긋나더라도, 앞서 설정한 while...sleep이 이를 흡수해주므로 신경 쓰지 않아도 된다.
그다음 Even 앱 쪽에서 에이전트(Agent)에 Claude Code를, 호스트(Host)에 http://100.x.x.x:3456을, 토큰에는 직접 정한 값을 입력한다. Terminal Mode를 활성화하고 호스트를 추가한 뒤, 온라인 상태가 되면 모든 준비가 완료된다.
글래스에 세션이 나타나지 않는 문제 (마지막 난관)
여기서 한 번 막혔다. Even 앱은 "세션을 선택해서 시작"할 뿐, 세션 자체를 생성해주지는 않는다. 게다가 세션은 사전에 존재해야만 한다.
로그를 보면, 스마트폰은 GET /api/sessions?provider=claude 200을 통해 목록을 확인하러 올 뿐이다. 따라서 세션이 0건이면 글래스에 보여줄 것이 없어 아무런 반응이 없다.
해결 방법은 허무할 정도로 간단하다. even-terminal과 동일한 폴더에서 claude를 한 번 실행하여 대화(session)를 하나 만들어두기만 하면 된다.
cd "/mnt/c/Users/<Windows 사용자명>/OneDrive"
claude
"안녕하세요"라고라도 입력하여 답장을 받은 뒤, /exit로 종료한다. 앱에서 세션 목록을 아래로 당겨 새로고침(pull-to-refresh)하면 방금 만든 대화가 나타난다. 그것을 선택해 시작하면 글래스에 표시된다.
PC와 글래스를 오가기
글래스와 PC는 동일한 세션을 공유하므로, 하던 작업을 그대로 이어서 할 수 있다.
cd "/mnt/c/Users/<Windows 사용자명>/OneDrive"
claude --resume # 목록에서 선택하여 재개
claude --continue # 직전 세션을 즉시 재개 (-c)
밖에서 글래스로 시작하고, 집에 돌아오면 PC에서 claude -c로 이어서 한다. 이 점이 은근히 매우 좋다. 세션을 삭제할 때는 앱에서 스와이프하거나, PC에서 ~/.claude/projects/ 하위 디렉토리를 삭제하면 된다.
막혔을 때 확인하는 표
| 증상 | 원인 | 대책 |
|---|---|---|
| 딱 1시간 만에 끊김 | pinggy 무료 버전의 60분 제한 | Tailscale로 교체 (무료) |
| ... | even-terminal --tailscale + tailscale up | |
codex: command not found | codex 측의 실행 실패 | 무해함. claude는 별도로 동작함 |
| 토큰이 매번 바뀜 | -t 미지정 | -t로 고정함 |
| 재부팅 후 Tailscale이 실행되지 않음 | systemd 비활성화 | systemd=true + systemctl enable tailscaled |
| Glass에 세션이 나타나지 않음 | 0 세션 / 시작되지 않음 | claude로 1개 생성 → 선택 → 시작 |
claude --resume이 작동하지 않음 | Claude Code 내부(❯)에서 입력 중 | /exit 후 셸($)에서 입력 |
1 setup issue: MCP | MCP 경고 | 무시해도 됨 |
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기