Сессии Claude Code откуда угодно: часы, телефон, второй мак, облако

Личная шпаргалка на сентябрь 2026 года, Claude Code 2.1.280. Моя схема: два мака, всегда включённая облачная ВМ (у меня Oracle Cloud), Apple Watch и телефон.

Главное за минуту

Сессия всегда крутится на какой-то машине. Телефон, браузер, десктоп и часы - только окна в неё. Поэтому первый вопрос всегда один: где живёт сессия.

Где живёт Когда доступна Как туда попасть
Мак пока мак не спит терминал, десктоп-приложение, телефон через Remote Control
Своя ВМ в облаке всегда телефон и браузер через Remote Control, часы, ssh с мака
Облако Anthropic всегда, мак не нужен телефон, браузер, claude --cloud из терминала

Remote Control (RC) - встроенная функция Claude Code: сессия остаётся на своей машине, а приложение Claude и claude.ai/code показывают её и дают писать в неё.

Долгие дела лучше запускать на ВМ. Мак засыпает, и его сессии пропадают со связи до пробуждения.

Хочу - делаю

Хочу Делаю
Продолжить с телефона сессию из терминала мака в терминале claude --remote-control <имя>, или /rc в уже идущей сессии
Чтобы сессия на маке пережила закрытие терминала запустить её внутри tmux
Новую сессию на ВМ с телефона приложение Claude: + New session -> чип окружения -> Remote control -> имя ВМ и проект
Задачу голосом с часов Shortcut на часах, сессия откроется на ВМ
С часов в другом проекте сказать «в проекте X: …», сессия сама запустит отдельную в X
С мака запустить сессию на ВМ ssh <вм> start-session.py <проект> "задача", подробности ниже
Задачу в облако, мак можно закрыть claude --cloud "задача" или облачное окружение в приложении
Увидеть все сессии на всех машинах свой скрипт, который обходит машины по ssh

Часы

Готовой кнопки «Claude Code на часах» нет, поэтому я собрал цепочку сам:

  1. Shortcut на Apple Watch принимает задачу голосом и шлёт её POST-запросом.
  2. Запрос уходит на ВМ через Tailscale Funnel. Funnel даёт публичный HTTPS-адрес сервису внутри tailnet, открывать порты не нужно.
  3. Маленький HTTP-сервис на ВМ (у меня он называется «приёмник») проверяет токен и лимиты, затем запускает в tmux claude --remote-control с задачей.
  4. Сессия появляется в приложении Claude на телефоне, дальше её можно вести оттуда.

Проект выбирается двумя способами.

  1. Словами в задаче. «Запусти в проекте kartuli: разбери новые слова». Сессия открывается в проекте по умолчанию, видит, что задача про другой проект, и запускает там отдельную сессию. Та работает по AGENTS.md и правилам своего проекта. Shortcut менять не надо. Проверено: сессия сама передала задачи в два других проекта.
  2. Полем project в запросе. Сессия сразу стартует в нужном каталоге. Список проектов приёмник отдаёт по GET /projects, Shortcut показывает его как меню.

Что держит это в рамках:

Сессия запускает сессию

Для второго способа выбора проекта на ВМ лежит скрипт start-session.py. Его зовёт сессия с часов, когда задача про другой проект, и его же можно вызвать с мака по ssh. Запускать он умеет двумя путями:

ssh <вм> 'start-session.py --list'
ssh <вм> 'start-session.py kartuli "задача"'
ssh <вм> 'start-session.py --direct kartuli "задача"'

Открыть такую сессию в терминале: зайти на ВМ и tmux attach -t <имя>. Выйти, не останавливая сессию, - Ctrl-b d.

Грабля, на которой я споткнулся. tmux-сервер запоминает переменные окружения на момент своего старта. Если потом поменять конфиг сервиса, сессии в старом tmux увидят старые пути. Скрипт поэтому читает настройки из юнита systemd, а не из окружения.

Телефон и браузер

Приложение Claude (вкладка Code) и claude.ai/code показывают три вида сессий:

Если сессия на маке не появилась в приложении, почти всегда виноваты переменные DISABLE_TELEMETRY, DO_NOT_TRACK или CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC в окружении. Они выключают проверку feature flags, и RC молча не стартует. То же делает CLAUDE_CODE_OAUTH_TOKEN: для RC нужен обычный вход через claude auth.

Второй мак

Работать можно тремя способами, от простого к полному.

  1. Через Remote Control. Сессию на первом маке запускаем с RC и открываем на втором в браузере (claude.ai/code) или в десктоп-приложении. Ничего настраивать не нужно, но первый мак не должен спать.
  2. Через ssh и tmux. Со второго мака ssh <первый-мак>, потом tmux attach -t <сессия>. Получаем полный терминал той же сессии. Нужны сеть между маками (у меня Tailscale) и бодрствующий первый мак.
  3. Через git. Коммит и push на одном маке, pull и новая сессия на другом. Контекст разговора не переносится, только код и заметки.

Что не работает: claude --resume видит только сессии своей машины. Транскрипты между маками не синхронизируются.

По документации десктоп-приложение умеет открывать сессию на удалённой машине по ssh (окружение SSH в Code). Я это не проверял.

Для дел, которые нужны с обоих маков, удобнее ВМ: оттуда сессия видна с любого устройства и не зависит от сна маков.

Облако

Облачная сессия работает на виртуальной машине Anthropic. Туда клонируется репозиторий с GitHub, так что мак можно закрыть. Этот раздел я пока собрал по документации и claude --help, сам в работе не гонял.

Когда подходит: задача в репозитории на GitHub, мак уйдёт в сон, хочется запустить несколько задач параллельно.

Когда не подходит: нужна своя ВМ, внутренняя сеть или данные, которых нет в GitHub. Сеть в облаке по умолчанию ограничена списком разрешённых адресов. Рабочие данные с персональными данными людей в облако не отправлять.

Все сессии одним списком

Когда машин несколько, быстро теряешь, где что запущено. Я написал команду cockpit sessions. Она по ssh отправляет на каждую машину короткий bash-скрипт через bash -s и собирает по каждой:

Список машин задаётся переменной окружения, например mac=local;vm=ssh vm;air=ssh air. Сессии старше заданного числа дней помечаются STALE. Процессы, которые крутятся на уже удалённом после обновления бинаре claude, помечаются DELETED BINARY: их стоит перезапустить. Спящая машина показывается строкой unreachable. Команда только читает и ничего не останавливает.