CLAUDE CODE НА ХОДУ

Автор: mgranda
Дата: январь 2026
  

Я запускаю шесть агентов Claude Code параллельно с моего телефона. Без ноутбука, без настольного компьютера — только Termius на iOS и облачная VM.

Настройка

flowchart LR
    A[Phone] -->|Termius + mosh| B[Tailscale VPN]
    B --> C[Vultr VM]
    C --> D[Claude Code]
    D -->|PreToolUse hook| E[Poke webhook]
    E -->|Push notification| A

Цикл таков: запустить задачу, убрать телефон в карман, получить уведомление, когда Claude нужен ввод. Асинхронная разработка откуда угодно.

Инфраструктура

VM Vultr в Силиконовой долине:

SpecValue
Instancevhf-8c-32gb
Cost$0.29/час (~$7/день при работе)
AccessТолько Tailscale (без публичного SSH)

Я плачу только когда работаю. Два скрипта управляют жизненным циклом:

vm-start   # Start VM, wait for Tailscale, connect via mosh
vm-stop    # Halt VM

У меня также есть Shortcut для iOS, который напрямую вызывает API Vultr — запускаю VM с телефона еще до того, как открою Termius.

Публичный IP VM не имеет SSH-слушателя. Весь доступ осуществляется через частную сеть Tailscale. Эшелонированная защита: облачный файрвол блокирует все, кроме координации Tailscale, локальные nftables в качестве резервной копии, fail2ban для надежности.

Мобильный Терминал

Termius обрабатывает SSH и mosh на iOS/Android. Mosh — это ключ — он переживает смену сети. Переключение с WiFi на сотовую связь, прохождение через мертвую зону, перевод телефона в спящий режим. Соединение сохраняется.

mosh --ssh="ssh -p 47892" [email protected]

Одна загвоздка: mosh не пересылает SSH-агент. Для git-операций, требующих аутентификации GitHub, я использую обычный SSH внутри tmux.

Постоянство Сессии

Оболочка автоматически подключается к tmux при входе. Закройте Termius, откройте снова через несколько часов — все на месте.

# In .zshrc
if [[ -z "$TMUX" ]]; then
    tmux attach -t main 2>/dev/null || tmux new -s main
fi

Несколько агентов Claude работают в параллельных окнах. C-a c для нового окна, C-a n для переключения. Хорошо работает на телефонной клавиатуре.

Push-Уведомления

Это то, что делает мобильную разработку практичной. Без уведомлений вы бы постоянно проверяли терминал. С ними можно отойти.

Хук в ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "AskUserQuestion",
      "hooks": [{
        "type": "command",
        "command": "~/.claude/hooks/poke-notify.sh question"
      }]
    }]
  }
}

Когда Claude вызывает AskUserQuestion, срабатывает хук. Простой скрипт извлекает вопрос и отправляет POST на webhook Poke:

QUESTION=$(echo "$EVENT_DATA" | jq -r '.tool_input.questions[0].question')
MESSAGE="$PROJECT_NAME: Claude needs input - $QUESTION"
curl -X POST "$API_URL" -d "{\"message\": \"$MESSAGE\"}"

Телефон вибрирует. Уведомление показывает вопрос. Нажмите, ответьте, продолжайте.

Модель Доверия

Я запускаю Claude Code в разрешительном режиме. VM изолирована — нет доступа к производственным системам, нет секретов, кроме необходимых для разработки. Худший случай: Claude делает что-то неожиданное на одноразовой VM.

Контроль расходов добавляет еще один уровень. VM стоит $0.29/час. Даже если что-то выйдет из-под контроля, дневной лимит ограничен.

Параллельная Разработка

Git worktrees позволяют мне запускать несколько функций одновременно:

~/Code/myproject/              # main
~/Code/myproject-sidebar/      # feature branch
~/Code/myproject-dark-mode/    # another feature

Каждое worktree получает свое окно tmux с агентом Claude. Распределение портов основано на хеше — детерминировано из имени ветки, без конфликтов:

hash_val = sum(ord(c) for c in branch_name)
django_port = 8001 + (hash_val % 99)

Шесть агентов, шесть функций, один телефон.

Что Это Позволяет

Проверять PR в ожидании кофе. Запускать рефакторинг в поезде. Исправлять баг с дивана во время просмотра ТВ.

Схема: запустить задачу, которая займет у Claude 10-20 минут, заняться чем-то другим, получить уведомление, ответить, повторить. Разработка вписывается в промежутки дня вместо требования выделенного времени за столом.

Компоненты

ToolPurpose
VultrОблачная VM ($0.29/час, оплата по использованию)
TailscaleЧастная сеть, безопасный доступ
TermiusSSH-клиент для iOS/Android
moshСетеустойчивая оболочка
tmuxПостоянство сессии
PokePush-уведомления через webhook
Claude CodeСобственно работа

Настройка заняла одну сессию Claude Code для создания — дал ему свой API-ключ Vultr и доступ к gh, попросил безопасную dev VM. Теперь я кодирую с телефона.


Обсудите эту статью на Hacker News