Сессии 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 на часах» нет, поэтому я собрал цепочку сам:
- Shortcut на Apple Watch принимает задачу голосом и шлёт её POST-запросом.
- Запрос уходит на ВМ через Tailscale Funnel. Funnel даёт публичный HTTPS-адрес сервису внутри tailnet, открывать порты не нужно.
- Маленький HTTP-сервис на ВМ (у меня он называется «приёмник»)
проверяет токен и лимиты, затем запускает в tmux
claude --remote-controlс задачей. - Сессия появляется в приложении Claude на телефоне, дальше её можно вести оттуда.
Проект выбирается двумя способами.
- Словами в задаче. «Запусти в проекте kartuli:
разбери новые слова». Сессия открывается в проекте по умолчанию, видит,
что задача про другой проект, и запускает там отдельную сессию. Та
работает по
AGENTS.mdи правилам своего проекта. Shortcut менять не надо. Проверено: сессия сама передала задачи в два других проекта. - Полем
projectв запросе. Сессия сразу стартует в нужном каталоге. Список проектов приёмник отдаёт поGET /projects, Shortcut показывает его как меню.
Что держит это в рамках:
- Белый список проектов. Имя проверяется по файлу на
ВМ. Произвольный путь передать нельзя,
../и абсолютные пути отклоняются. - Лимиты. Не больше 4 живых сессий и 5 запусков в минуту.
- Уборка. Сессию, где 12 часов ничего не происходило, приёмник закрывает сам.
- Отдельный пользователь на ВМ. Репозитории с чувствительными данными ему открыты только на чтение, это права файловой системы, а не просьба в промпте.
Сессия запускает сессию
Для второго способа выбора проекта на ВМ лежит скрипт
start-session.py. Его зовёт сессия с часов, когда задача
про другой проект, и его же можно вызвать с мака по ssh. Запускать он
умеет двумя путями:
- Через приёмник (по умолчанию). Действуют белый список, лимит сессий и лимит частоты, как у запуска с часов.
--direct, если приёмник упал. Скрипт зовёт тот же код приёмника напрямую. Белый список и лимит сессий остаются, нет только лимита частоты.
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 показывают три вида сессий:
- Сессии с маков и ВМ через Remote Control. Видны, пока машина не спит и процесс жив.
- Новые сессии на ВМ. На ВМ постоянно работает сервер
RC (
claude remote-control --spawn worktree). В приложении он подписан системным именем машины (hostname), а не тем, как вы её называете. Каждая новая сессия получает свою копию репозитория (git worktree), так что параллельные сессии друг другу не мешают. - Облачные сессии. Об этом раздел «Облако».
Если сессия на маке не появилась в приложении, почти всегда виноваты
переменные DISABLE_TELEMETRY, DO_NOT_TRACK или
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC в окружении. Они
выключают проверку feature flags, и RC молча не стартует. То же делает
CLAUDE_CODE_OAUTH_TOKEN: для RC нужен обычный вход через
claude auth.
Второй мак
Работать можно тремя способами, от простого к полному.
- Через Remote Control. Сессию на первом маке запускаем с RC и открываем на втором в браузере (claude.ai/code) или в десктоп-приложении. Ничего настраивать не нужно, но первый мак не должен спать.
- Через ssh и tmux. Со второго мака
ssh <первый-мак>, потомtmux attach -t <сессия>. Получаем полный терминал той же сессии. Нужны сеть между маками (у меня Tailscale) и бодрствующий первый мак. - Через git. Коммит и push на одном маке, pull и новая сессия на другом. Контекст разговора не переносится, только код и заметки.
Что не работает: claude --resume видит только сессии
своей машины. Транскрипты между маками не синхронизируются.
По документации десктоп-приложение умеет открывать сессию на удалённой машине по ssh (окружение SSH в Code). Я это не проверял.
Для дел, которые нужны с обоих маков, удобнее ВМ: оттуда сессия видна с любого устройства и не зависит от сна маков.
Облако
Облачная сессия работает на виртуальной машине Anthropic. Туда
клонируется репозиторий с GitHub, так что мак можно закрыть. Этот раздел
я пока собрал по документации и claude --help, сам в работе
не гонял.
- Из терминала:
claude --cloud "задача"в каталоге репозитория. В облако уходит ветка с GitHub, поэтому сначала push. - С телефона или из браузера: + New session, окружение по умолчанию и есть облако, выбрать репозиторий.
- Вернуть к себе:
claude --teleportпоказывает облачные сессии и продолжает выбранную локально. Нужны чистыйgit statusи тот же репозиторий. - По расписанию:
/scheduleили claude.ai/code/routines. Облачный агент запускается сам, например каждое утро.
Когда подходит: задача в репозитории на GitHub, мак уйдёт в сон, хочется запустить несколько задач параллельно.
Когда не подходит: нужна своя ВМ, внутренняя сеть или данные, которых нет в GitHub. Сеть в облаке по умолчанию ограничена списком разрешённых адресов. Рабочие данные с персональными данными людей в облако не отправлять.
Все сессии одним списком
Когда машин несколько, быстро теряешь, где что запущено. Я написал
команду cockpit sessions. Она по ssh отправляет на каждую
машину короткий bash-скрипт через bash -s и собирает по
каждой:
- версии claude;
- живые процессы claude: каталог, возраст, имя RC;
- tmux-сессии;
- сервисы: сервер RC и приёмник часов.
Список машин задаётся переменной окружения, например
mac=local;vm=ssh vm;air=ssh air. Сессии старше заданного
числа дней помечаются STALE. Процессы, которые крутятся на
уже удалённом после обновления бинаре claude, помечаются
DELETED BINARY: их стоит перезапустить. Спящая машина
показывается строкой unreachable. Команда только читает и
ничего не останавливает.