VibeOSMobile Part 2. Codex у смартфоні, розширяю можливості VibeOSMobile

💡 Усі статті, обговорення, новини про Mobile — в одному місці. Приєднуйтесь до Mobile спільноти!

У попередній статті «VibeOSMobile, експеримент із локальним AI-середовищем розробки на Android» я описував експеримент із VibeOSMobile — локальним середовищем розробки на Android, у якому можна було згенерувати код, запустити його, перевірити результат, виправити помилки та зберегти готовий компонент як окремий віджет або маленький застосунок.

На той момент VibeOSMobile вже підтримував:

  • HTML і JavaScript-віджети;
  • Python scripts;
  • Python web apps;
  • Java;
  • локальні моделі через Ollama;
  • Claude API та OpenAI API;
  • AI workflow (detect → generate → run → validate → fix )

Мене постійно не покидала думка таки додати ще підтримку GPT 5.5 моделей для мого VibeOSMobile, але палити додаткові вічнозелені долари на API Claude/OpenAI якось трохи тиснуло. А так, як у мене є GPT Plus підписка і там з нею йде вагон токенів почав досліджувати питання запуску CodexCLI на своєму старенькому Samsung S21 телефоні. Codex може працювати безпосередньо з файловою системою проєкту:

  • читати наявні файли;
  • створювати нові;
  • редагувати код;
  • запускати команди;
  • аналізувати помилки;
  • повторювати цикл виправлення;
  • працювати з інструкціями проєкту.
  • а там і агенти зі скілами підтягнути можна.

Для VibeOSMobile це значно ближче до початкової ідеї, ніж звичайний виклик «слабенької» LLM. Виявилось все простіше, ніж я собі уявляв, але кілька годин це таки зайняло. Але давайте про усе попорядку.

Перша спроба запустити Codex CLI у Termux напряму була не вельми вдалою. Спочатку я спробував запустити npm install -g @openai/codex, але Termux працює на Android і використовує Bionic libc, тоді як Codex CLI очікує звичайне Linux-середовище та Linux ARM64 binary, в результаті npm не зміг коректно підтягнути потрібну platform-specific dependency.У результаті npm не зміг коректно підтягнути потрібну platform-specific dependency, тому архітектура стала трохи складнішою:

Android -> Termux -> Ubuntu через proot-distro -> Node.js -> Codex CLI

Ще кілька скриптів і налаштувань Codex CLI і все запрацювало як годинник

Наступним кроком додав новий провайдер безпочередгьо у VibeOSMobile (явно потрібно змінити назву)

Тепер VibeOSMobile підтримує чотири основні режими:

  1. Local Ollama;
  2. Claude API;
  3. OpenAI API;
  4. Codex CLI через ChatGPT-акаунт.

Codex у цій схемі трошки відрізняється від інших провайдерів, Ollama, Claude й OpenAI повертають код як відповідь. Codex працює через окремий workspace і створює файли безпосередньо у файловій системі. Приблизний flow:

VibeOSMobile prompt -> створення workspace -> запуск Ubuntu через proot -> codex exec -> створення index.html / app.py / Main.java -> VibeOSMobile читає файли -> preview ->validate -> save

Для кожної задачі VibeOSMobile створює окрему директорію. Наприклад: ~/vibeos-codex-workspaces/project_1718000000/

У ній генеруються: index.html app.py main.js Main.java codex.log і т.д.

Це важливо з двох причин, по-перше, Codex не працює в загальній директорії з усіма файлами телефона, по-друге, кожна генерація ізольована, тому старий калькулятор не повинен випадково перетворитися на нову Flappy Bird-гру або навпаки.

Перші версії інтеграції мали ще одну цікаву проблему. VibeOSMobile запускав приблизно такий ланцюжок:

Python backend — proot-distro — Ubuntu — bash — codex exec — Node.js process

Коли backend досягав timeout, він завершував лише батьківський процес, а дочірні proot, bash і codex exec могли залишатися на фоні, трошки роботи руцями і на телефоні вже одночасно працювали:

  • стара генерація Flappy Bird;
  • новий HTML-віджет;
  • кілька proot-сесій;
  • кілька Codex-процесів.

Перевірити це можна було командою: pgrep -af «codex|proot»

У наступній версії я додав запуск Codex в окремій process group. Після timeout VibeOSMobile завершує весь ланцюжок процесів, а не лише верхній Python subprocess.

На рівні UI все залишилося максимально просто. У Setup:

  1. Provider: Codex CLI
  2. Model: GPT-5.5
  3. Timeout: 300 або 600 секунд

Далі в Agent вікні вводимо промпт: Create a Flappy Bird-style game with a flying robot. Після натискання Generate/Run VibeOSMobile app:

  • створює workspace;
  • запускає Codex;
  • отримує index.html;
  • завантажує його в редактор;
  • відкриває preview;
  • дозволяє зберегти результат як окремий widget/app.

Після збереження застосунок відкривається в окремому App Viewer, тобто Codex потрібен для створення або зміни застосунку, але не для кожного наступного запуску.

Це все ще експеримент, основні обмеження:

  • Android не є офіційною платформою для такого сценарію;
  • Codex працює всередині Ubuntu через proot;
  • стандартний Linux sandbox не працює;
  • Docker і systemd тут практично недоступні;
  • великі генерації можуть тривати кілька хвилин;
  • телефон мінімально нагрівається :)
  • паралельні Codex-процеси потрібно контролювати;
  • розробка складних проєктів ще, наразі під питанням .

Що вийшло в результаті. На телефоні зараз працює повний ланцюжок:

Prompt -> Agentic Flow -> Codex CLI -> GPT-5.5 -> project files -> local runtime -> preview -> validation -> fix -> saved application

Згенерований віджет можна:

  • запустити;
  • відредагувати;
  • виправити;
  • перейменувати;
  • експортувати як HTML;
  • зберегти як локальний застосунок;
  • повторно відкрити без повторної генерації.

Найцікавіше, що тепер на телефоні працює не просто локальна модель або чат із генерацією коду, фактично це портативна Codex development station, поверх якої працює власний UI, локальні runtimes, saved apps, agents і skills, один промпт і примітивний віджет, який використовує камеру, визначає об’єкти в кадрі та в реальному часі показує результат розпізнавання об’єктів.

Я пропустив ще дуже багато нюансів, які виникли під час розробки прототипу, в разі чого — запитуйте, а для тих, хто пропуcтив першу частину, рекомендую почитати.

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Привіт, цікаво слідкувати за розвитком.
Насправді хочеться протестувати на власному андроїд девайсі, але наскільки я зрозумів «VibeOsMobile» це імплементація довколо Termux apk.
Тому VibeOsMobile це не повноціний apk?

Так, наразі це побудовано з врахуванням Termuх, я планую зібрати apk, наразі це перекидається архівом.

Бажаю удачі.
З радістю чекну демку(apk)

Дякую!

Підписатись на коментарі