Claude Code с телефона — настроил за 20 минут, кодить можно откуда угодно
У меня всегда была одна проблема: закрыл крышку мака — сессия Claude Code умерла. Вышел из дома — всё, доступа нет. А задачи не ждут. Иногда хочешь по дороге запустить генерацию, подтвердить действие или просто посмотреть что агент делает — а ты отрезан.
Сегодня сел и разобрался. Оказалось, не так сложно — но нюансов хватает.
Проблема №1 — мак засыпает. В System Settings всё было «отключено», а он всё равно рвал соединение. Полез в терминал — оказалось, GUI врёт. Реальные настройки живут в pmset. Ключевой параметр — networkoversleep. Был 0 — значит при гашении экрана сеть тупо отключалась. Плюс caffeinate — запретил системе засыпать вообще.
Проблема №2 — доступ извне. Мак за NAT, белого IP нет. Tailscale решил за минуту: ставишь на мак и на айфон, логинишься одним аккаунтом — устройства видят друг друга по постоянному IP через любую сеть. Никаких пробросов портов, никакой возни с роутером.
Проблема №3 — мобильное соединение рвётся. SSH умирает при переключении WiFi → LTE, при потере сигнала в метро, при блокировке экрана. Поставил mosh — это SSH на стероидах, переживает любые обрывы. Переключился с WiFi на LTE — даже не заметил.
Проблема №4 — сессия не должна умирать. tmux. Запустил Claude Code в tmux-сессии на маке — она живёт вечно. Отключился, потерял связь, телефон сел — подключаешься обратно, tmux attach — всё на месте. Можно держать 3-5 сессий в разных проектах и переключаться между ними.
На айфоне поставил Moshi — терминал с нативным mosh, тач-скроллом и пуш-уведомлениями когда агент ждёт ввода.
Итоговый стек:
— pmset + caffeinate — мак не засыпает, сеть не рвётся
— Tailscale — VPN-меш, доступ откуда угодно
— mosh — соединение переживает любую сеть
— tmux — сессии живут вечно
— Moshi — терминал на айфоне
Теперь сижу в кафе, достаю телефон, подключаюсь — Claude Code работает ровно там, где я его оставил. Три проекта параллельно, переключаюсь в два тапа.
P.S. Настройка заняла ~20 минут. Большую часть времени потратил на то, чтобы понять почему networkoversleep был выключен — GUI показывал что всё ок.
У меня всегда была одна проблема: закрыл крышку мака — сессия Claude Code умерла. Вышел из дома — всё, доступа нет. А задачи не ждут. Иногда хочешь по дороге запустить генерацию, подтвердить действие или просто посмотреть что агент делает — а ты отрезан.
Сегодня сел и разобрался. Оказалось, не так сложно — но нюансов хватает.
Проблема №1 — мак засыпает. В System Settings всё было «отключено», а он всё равно рвал соединение. Полез в терминал — оказалось, GUI врёт. Реальные настройки живут в pmset. Ключевой параметр — networkoversleep. Был 0 — значит при гашении экрана сеть тупо отключалась. Плюс caffeinate — запретил системе засыпать вообще.
Проблема №2 — доступ извне. Мак за NAT, белого IP нет. Tailscale решил за минуту: ставишь на мак и на айфон, логинишься одним аккаунтом — устройства видят друг друга по постоянному IP через любую сеть. Никаких пробросов портов, никакой возни с роутером.
Проблема №3 — мобильное соединение рвётся. SSH умирает при переключении WiFi → LTE, при потере сигнала в метро, при блокировке экрана. Поставил mosh — это SSH на стероидах, переживает любые обрывы. Переключился с WiFi на LTE — даже не заметил.
Проблема №4 — сессия не должна умирать. tmux. Запустил Claude Code в tmux-сессии на маке — она живёт вечно. Отключился, потерял связь, телефон сел — подключаешься обратно, tmux attach — всё на месте. Можно держать 3-5 сессий в разных проектах и переключаться между ними.
На айфоне поставил Moshi — терминал с нативным mosh, тач-скроллом и пуш-уведомлениями когда агент ждёт ввода.
Итоговый стек:
— pmset + caffeinate — мак не засыпает, сеть не рвётся
— Tailscale — VPN-меш, доступ откуда угодно
— mosh — соединение переживает любую сеть
— tmux — сессии живут вечно
— Moshi — терминал на айфоне
Теперь сижу в кафе, достаю телефон, подключаюсь — Claude Code работает ровно там, где я его оставил. Три проекта параллельно, переключаюсь в два тапа.
P.S. Настройка заняла ~20 минут. Большую часть времени потратил на то, чтобы понять почему networkoversleep был выключен — GUI показывал что всё ок.