Проект: Simbeam — Удаленное управление iOS симулятором  Публичный пост
23 июля 2026  25
Simbeam — Удаленное управление iOS симулятором
https://simbeam.dev

Привет!

Я Кирилл, уже лет 10 занимаюсь iOS-разработкой и пока не собираюсь с ней завязывать. В этом году моя работа, как, наверное, и для многих из вас, сильно поменялась. С начала года я написал самостоятельно от силы 1000 строк кода, всё остальное делали агенты под моим чутким руководством. В какой-то момент я плотно подсел на эту иглу и одновременно работал над 3–4 проектами. Чуть не выгорел и задумался: чё вообще за хуйня? Нам вроде обещали будущее, где роботы работают за нас, а в итоге мы просто работаем больше.

Я решил сбавить обороты, не работать после работы, но FOMO, сука, уже никогда не даст вернуться в прошлый режим. Я вроде хочу гулять больше, но останавливаться полностью не хочу. Так я начал давать задания агентам удалённо, пока гуляю с собакой, сопровождаю жену на шоппинге или пью пиво с друзьями. Но я столкнулся с проблемой проверки результата, которая вообще не проблема для веб-разработчиков, но конкретная для iOS.

TL;DR

Я сделал Dev Tool, который позволяет удалённо подключаться к iOS-симулятору и управлять им. Подключиться можно как с айфона или айпада, так и через браузер.

Чуть подробнее о проблеме

Представьте: вы сидите в очереди на очередную бюрократическую процедуру. Можно листать мемы, а можно повайбкодить (== дать команду агенту и дальше смотреть мемы). Не всегда есть возможность присесть с ноутбуком, и я полюбил делать это с телефона. Сидишь, раздаёшь команды агентам, разглядываешь diff — как по мне, намного интереснее простого залипания в ленту!

И если вы веб-разработчик, то у вас всё шикарно: агент закодил, быстренько пересобрал — и вот уже через браузер можно увидеть результат. Но если вы iOS-разработчик, результат вы увидите не скоро: проект, помимо сборки, нужно подписать, загрузить в TestFlight и дождаться, пока Apple его запроцессит, а потом ещё установить. Это десяток минут в лучшем случае. Никуда не годится! Хочется коротких циклов.

Альтернативные пути решения

Конечно, я попробовал срезать углы и не писать ничего сам. Самое очевидное — Remote Desktop для мака. Получилось очень медленно, нафиг не нужен целый экран, с телефона жутко неудобно.

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

Источники вдохновения

Дело начиналось в январе, тогда ни у Клода, ни у Кодекса не было нормальных удалённых клиентов. Но был (и есть!) Happy!

Это модуль для агентов, который даёт доступ к чатам с агентами, с удобным интерфейсом, пушами и голосовым вводом. Всё, что требовалось, — установить npm-пакет и запустить сервер. Далее в консоли появлялся QR-код, который считываешь телефоном, и пейринг завершён: у вас есть стабильное соединение через их relay-сервер с end-to-end-шифрованием. Вот чего-то такого мне и захотелось.

К чему в итоге пришёл

Я поковырял проект ios-bridge, понял, что он использует фейсбуковский idb — попытку создать что-то похожее на ADB для Android — для управления симулятором и получения оттуда кадров. Подумал, что переиспользую.

Я принялся проектировать проект и пришёл к варианту с WebRTC. Я поднимаю signaling-сервер, который служит транспортом между маком и клиентом: один другому дозванивается, команды идут по одному каналу, видео обратно — по второму. Выглядит шикарно, работает вроде тоже неплохо :)

Ещё из технических решений: Go для демона и signaling-сервера, нативное приложение на Swift для iOS/iPadOS. Заодно решил сделать веб-клиент для удалённого доступа с десктопа или Android-сетапа.

Ключевые решения

  • Я старался сделать это настолько секьюрно, насколько возможно, поэтому выбрал WebRTC-стек: там из коробки есть шифрование и не нужно писать ничего своего. Две стороны обмениваются ключами через signaling, и далее канал зашифрованный.
  • Я старался сделать интро рабочим на старых ОС, поэтому iOS 16+ и macOS 14.0 / Xcode 15. Я целился в немолодые айпады — терминал в Claude Code + стриминг симулятора могут дать вторую жизнь некоторым планшетам.
  • Распространять решил через Homebrew. Во-первых, видно, из какого кода это собрано. Во-вторых, я использую приватные фреймворки, и в Mac App Store меня бы наверняка не пустили. А так как это тул для разработчиков, брю не должен быть проблемой.

Буду рад фидбеку и звезде на GitHub, если вам было полезно.

simbeam.dev

Откомментируйте первым 👇

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб