Консольний застосунок - не найочевидніша річ для розробки на планшеті. Ні повноцінного термінала, ні файлової системи, до якої звикли на десктопі, ні нормальної багатозадачності - так було ще пару років тому. Але якщо винести сам процес виконання коду на віддалений Linux-сервер, а iPad перетворити на тонкий клієнт для керування AI-агентом і перегляду результату, картина змінюється повністю. Нижче - робочий процес, який у мене склався для розробки CLI-інструментів на Python: VPS + AI Coding Agent (Claude Code) у tmux + Remote IDE як єдина точка входу, усе на iPad зі Stage Manager.

Чому саме консольні застосунки

CLI - вдячний жанр для такого робочого процесу. У консольного застосунку немає браузерного UI, який потрібно тицяти руками, немає візуального дизайну, який простіше збирати мишею на великому екрані. Є код, тести, залежності та команда для запуску - і весь цикл «написав - запустив - перевірив вивід» вкладається в термінал. Це якраз те, з чим AI-агент справляється найкраще: він пише код, сам його запускає, бачить вивід у тому самому терміналі й ітерує далі без участі людини на кожному кроці.

Для такого циклу потрібно небагато: SSH-доступ до сервера, де крутиться агент, і спосіб паралельно дивитися на файли й на diff, не втрачаючи сесію агента під час перемикання між вікнами. Далі - як це виглядає покроково.

Крок перший: сервер і проєкт

Усе починається з опису сервера - звичайна форма з адресою, портом і способом автентифікації (пароль або SSH-ключ, ключі та паролі йдуть виключно в Keychain пристрою). Після цього створюється сам проєкт: назва, шлях на сервері - і перемикач «Use remote filesystem».

Цей перемикач визначає, як проєкт поводитиметься далі. Якщо він вимкнений, Remote IDE працює як зазвичай - локальні файли в iCloud Drive, які вручну синхронізуються із сервером через SFTP-кнопки в тулбарі. Але для CLI, який розробляє агент прямо на сервері, набагато зручніше увімкнути його: тоді дерево файлів проєкту в сайдбарі підтягується напряму із сервера по SFTP, а відкриття та збереження файлу в редакторі йде прямо у віддалену файлову систему. Жодної локальної копії, жодної ручної синхронізації і, що важливо, жодного ризику розійтися з тим, що бачить і править агент у терміналі - редактор і агент дивляться в одну й ту саму файлову систему в реальному часі.

Створення нового remote-проєкту з увімкненим перемикачем Use remote filesystem

Крок другий: tmux - окремі вікна для консолі та агента

Далі - термінал. У налаштуваннях підключення є перемикач «Use tmux»: якщо він увімкнений, SSH-сесія обгортається в tmux прямо на сервері. Практичний сенс цього - не тільки в тому, що сесія переживає розрив зв’язку (закрили кришку iPad, втратили Wi-Fi - при перепідключенні все на місці, включно з тим, що друкував агент). Усередині tmux я тримаю окремі вікна на один і той самий проєкт: одне - звичайний bash для git-команд, запуску тестів, ручних перевірок; друге - запущений у ньому CLI-агент (Claude Code, Codex CLI і подібні). Кожен проєкт отримує свою іменовану tmux-сесію, тож між my-pet-project і сусіднім проєктом на тому самому сервері агент і консоль одне одному не заважають, а перемикання між кількома одночасними задачами - це просто перемикання tmux-вікна, а не пошук, куди поділася сесія.

На практиці це виглядає так: рядок статусу внизу показує активне вікно tmux-сесії поточного проєкту - можна тримати відкритими і bash, і агента, перемикаючись між ними без втрати контексту в жодному з них.

Налаштування сервера з увімкненим перемикачем Use tmux

Крок третій: Stage Manager замість перемикання вкладок

Далі вступає багатовіконність iPadOS 26. SSH-консоль з агентом - це рівно один із потоків інформації; паралельно хочеться бачити код, який агент щойно написав, і що змінилося відносно попереднього коміту. Тримати все це в одному вікні з постійним скролом незручно, а от розкидати по Stage Manager чи Split View - це якраз те, для чого він і створювався.

Робочий набір зазвичай такий: зліва - вікно з консоллю агента (Remote IDE в SSH-режимі), справа - друге вікно з редактором і файловим деревом проєкту, за потреби третє - плаваюче вікно Git-статусу. Усе це незалежні нативні вікна застосунку, якими Stage Manager керує так само, як вікнами різних застосунків: перетягування, зміна розміру, збереження розкладки між сесіями. Агент пише код у терміналі зліва, а ви в цей час гортаєте файли й diff справа - без жодного перемикання контексту.

Два вікна Stage Manager поруч: bash-консоль зліва і tmux-вікно з CLI-агентом справа

Робота з файлами так, ніби вони локальні

Саме увімкнена віддалена файлова система робить це по-справжньому безшовним. Відкриваєте README.md, який агент щойно створив на сервері, - файл відкривається в редакторі так само, як звичайний локальний файл, з деревом каталогів проєкту в сайдбарі: .claude, .git, .venv, src, tests, pyproject.toml, uv.lock. Правите руками те, що хочеться поправити самому, не чекаючи на агента, - збереження йде на сервер автоматично, при кожній зміні. Жодного «завантажити - поправити - залити назад»: редактор і термінал працюють з однією й тією самою копією файлів на сервері одночасно.

Підсвітка синтаксису, яка не виглядає компромісом

Окремо варто сказати про сам редактор. Він побудований на Runestone з граматиками Tree-sitter - тобто підсвітка не «розфарбовування по regex», а чесний синтаксичний розбір для конкретної мови. Python, TOML, Markdown, YAML, JSON, Shell і ще кілька десятків мов визначаються автоматично за розширенням файлу. Відкривши pyproject.toml, який агент щойно відредагував, бачиш нормально підсвічені секції та значення, а не суцільний сірий текст - те саме відчуття «це справжній редактор коду», а не текстове поле з моноширинним шрифтом.

README.md, створений агентом, відкритий у редакторі з підсвіткою синтаксису Markdown

Git-дифи без виходу в консоль

Одна з речей, заради якої окреме вікно Git виправдовує себе найбільше саме в парі з агентом, - швидкий візуальний контроль того, що він понавносив у файли, без набору git diff руками. Список змінених файлів - з позначками A (added) і подібними - відкривається поруч із редактором; вибір файлу одразу показує порядковий diff з підсвіткою доданого зеленим і видаленого червоним. Агент відредагував pyproject.toml, змінивши description у маніфесті, - це видно порядково, без потреби просити його самого переказати, що він змінив, і без ризику, що переказ розійдеться з реальним діфом.

Це особливо цінно, коли агент виконав задачу за кілька хвилин «у фоні»: повертаєшся не до стіни тексту в чаті, а одразу до списку файлів і порядкових змін.

Вікно Git-статусу: список змінених файлів і порядковий diff README.md поруч із редактором

Тулбар клавіатури: дрібниця, яка економить час щохвилини

Екранна клавіатура iPadOS не заточена під код - дужки, крапка, =, # заховані на додаткових розкладках, а Tab на ній узагалі немає. Над клавіатурою в редакторі Remote IDE з’являється додаткова панель швидкого вводу саме з цими символами: Tab, парою дужок з курсором між ними, крапкою, знаком рівності та решіткою. При активному текстовому полі вона завжди під рукою - не потрібно пірнати в третій шар системної клавіатури заради банальної дужки. При працюючій фізичній клавіатурі панель, звісно, не потрібна і не заважає.

Як це виглядає загалом

Збираю сценарій із практики: створюю новий remote-проєкт my-pet-project з увімкненою віддаленою файловою системою, вказую шлях на сервері. У tmux-вікні агента прошу зібрати каркас Python CLI на typer і uv - агент створює структуру, pyproject.toml, README.md, тести, запускає uv run і показує, що команди hello та version працюють. Далі править pyproject.toml - уточнює description - і я бачу це порядково в Git-вікні, ще до того, як агент сам про це відзвітував. Питаю в агента: «як запустити застосунок?» - отримую точні команди cd, uv run my-pet-project hello --name World, uv run my-pet-project version - тут же, не виходячи з консолі, пробую їх у сусідньому tmux-вікні зі звичайним bash. Відкриваю README.md у редакторі - він уже підсвічений за Markdown, читається нормально. Усе це - три-чотири вікна на екрані одночасно, жодного перемикання вкладок наосліп.

Підсумок

Розробка консольних застосунків - чи не ідеальний випадок для цієї зв’язки: агент, якому не потрібен графічний інтерфейс, сервер, на якому він і працює, і iPad, який перестає бути «майже робочою станцією» і стає повноцінним пультом керування всім процесом - з підсвіткою синтаксису, порядковими дифами, окремими tmux-вікнами на проєкт і багатовіконністю, яка нарешті не заважає, а допомагає.

Remote IDE - обговорити функціональність, запропонувати ідею чи повідомити про проблему можна в GitHub Issues.


Завантажити Remote IDE в App Store →


Теги: iOS розробка, iPadOS, Swift, DevOps, SSH, CLI, консольні застосунки, AI, агентне програмування, tmux, Git